繁体   English   中英

在后台运行PHP脚本

[英]Running PHP script in background

我正在测试一个在Debian的OS-X系统上开发的php脚本,它在那里表现不同。

为了重现它,我编写了两个脚本:parent.php和child.php:

parent.php:

#!/usr/bin/php
<?php

echo "parent started...\n";
shell_exec(__DIR__ . '/child.php &2>/dev/null &');
echo "parent finished.\n";

child.php:

#!/usr/bin/php
<?php

echo "child started...\n";
sleep(5);
echo "child finished.\n";

在OS-X上运行parent.php我立刻回到了两个输出行(父启动,父完成)。 在Debian上,我得到“父母开始...”行,然后延迟5秒,然后“父母完成。”。 在shell中运行“./child.php&2> / dev / null&”会立即按照预期返回提示。 我有什么想法可以解决这个问题吗?

这是因为&2>部分。 并非所有系统都支持它。 也在每个shell(bash,sh,ksh等)中。

试试这个,

 exec("/bin/bash -c '/usr/bin/php /path/to/child.php 2> /dev/null' &");

如果要抑制所有输出使用此,

 exec("/bin/bash -c '/usr/bin/php /path/to/child.php &> /dev/null ' &");

BASH-HOWTO

刚刚测试过, exec("/usr/bin/php /path/to/child.php > /dev/null 2>&1 &")应该可以运行。

尝试使用exec()system()而不是shell_exec,也许shell_exec在不同的操作系统上具有不同的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM