好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
PHP执行后台进程 关闭 返回上一级  

PHP执行后台进程
+ 查看更多

发布日期:2018-02-24 17:47
分类:PHP
浏览次数:35
我需要让用户能够执行复制一个比较大的目录的操作。请注意,是非常大的目录。所以我需要能够在用户无法察觉到完成复制所消耗的时间的前提下执行这项操作(又或者说,不能让用户等待)。
无论得到什么建议,我都会十分感谢。

回答

exec(sprintf("%s > %s 2>&1 & echo $! >> %s", $cmd, $outputfile, $pidfile));
假设这个操作是在一台Linux机器上运行的,我总是会这样处理它:

这条语句发起一条指令$cmd,将指令输出重定向到$outputfile,并将进程号写入$pidfile。
下列这个函数让你可以简单地监控这个进程在做什么以及它是否还在运行。
function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %d", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}
上一篇如何使用PHP把秒数转换成 时:分:秒
如何使用PHP检查一个数组是否为空?下一篇
下一篇如何使用PHP检查一个数组是否为空?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号