2012-10-11 23 views
14

我搜索了很多以找到确切的答案,但没有找到任何。使用可执行函数的php后台进程

很多人提到我们应该在&之后不要等待回应。
例如运行bg.php背景,此建议:

exec("/usr/bin/php bg.php &"); 

,但它不为我工作。主脚本等待完成执行bg.php

我也读过某处写bg.php在日志文件中输出,但我的后台脚本不会产生任何输出。它执行一些过程,然后在数据库中写入内容。

我只想我的脚本运行bg.php,不要等它结束。

请帮助我,包括正确的代码。

回答

18

你必须重新路由程序输出过的地方,通常的/ dev/null的

exec($cmd . " > /dev/null &"); 
+0

工作正常!但什么是/ dev/null目录?该命令是否将输出写入文件? – Aliweb

+1

/dev/null只是丢弃发送给它的数据,如果需要程序输出,您可以选择将其路由到某个文件 – ninaj

0

你有没有考虑过使用屏幕?您可以启动在分离进程中运行的屏幕会话。

screen -d -m -S my_bg_session /usr/bin/php bg.php 

然后,你可以稍后连接到它,如果它仍在运行:

screen -r my_bg_session