php - 为什么这个进程不在后台运行?

标签 php linux ubuntu

所以基本上我想运行将生成大约 15k pdf 文件的脚本,并且由于 php max_timeout 而需要从 shell 完成...

服务器:Ubuntu 10.04.1 PHP : 5.3.2-1ubuntu4.5

所以我目前尝试的是:

function run_in_background($Command){
    $ps = shell_exec("nohup php5 $Command > /dev/null 2> /dev/null & echo $!");
    return $ps;
}

$ok = run_in_background('/var/www/custom/web/public/make_pdf.php');

if(!empty($ok))
    var_dump($ok);
else
    exit('Fail');

然后我转到 ssh 控制台并执行 ps $ps 作为响应,我只得到没有信息的 header - 这意味着进程没有运行......

我怎样才能做到这一点?

最佳答案

尝试不使用 echo $! 或以 & 结尾。如果您想“内联”运行 2 个进程,请使用 && 而不是简单的 &

示例:nohup php5 $Command >/dev/null 2>/dev/null && echo $! &

要检查进程是否以错误结束,请执行以下操作:

nohup php5 $Command > command_stout.txt 2> command_stderr.txt && echo $! &

关于php - 为什么这个进程不在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5911989/

相关文章:

ubuntu - Symfony2 在 Ubuntu 虚拟机上运行缓慢

PHP SOAP HTTP 请求

python - CentOS安装后看不到python3.8

php - 如何将 PHP 变量传递给 Javascript?

c - 如何在 gdb 中递归设置源文件目录?

linux - 如何更改特定目录的权限而不影响该目录内所有内容的权限?

linux - Ubuntu 12.04.2服务器在恢复模式下自动进入root shell

ubuntu - 从 Controller 节点中删除 Openstack Compute Service

javascript - JS函数从数组中获取最小值和最大值?

php - 使用LOAD DATA LOCAL INFILE将CSV添加到MySQL数据库时出现问题