从PHP文件在后台运行Python脚本
我需要在一个PHP文件被调用后,让一个Python脚本在后台运行。这个PHP文件应该能够独立于Python脚本继续运行,也就是说,它不应该因为等待Python脚本处理完而停下来,而是应该继续进行自己的处理。
这个Python脚本只需要一个参数,并且不会产生任何输出(它只是后台处理一些数据),然后就会退出。我正在使用Python 2.6、PHP 5.2.6和Ubuntu 9.04。
4 个回答
0
我猜这个PHP文件是通过Apache来调用的,这样的话你就不能使用fork()
这个功能了。你应该让你的Python脚本变成一个后台进程。可以看看这个链接:python-daemon。
1
可以用PHP的进程控制来实现这个功能。proc_open
这个命令可以用来启动一个新的进程。之后你可以查看这个进程的状态,读取它的输出等等。想了解更多,可以查看这个手册链接:http://www.php.net/manual/en/function.proc-open.php,也可以在谷歌上搜索“PHP进程控制”。
2
你可以使用exec()这个函数来启动Python解释器,并把它的输出结果发送到一个文件里,或者直接丢到/dev/null(这是一个特殊的地方,意思是把东西丢掉,不保存)。在exec调用中使用&符号,可以让这个命令在后台运行,PHP就可以继续执行后面的代码,而不用等这个命令的结果。
http://www.developertutorials.com/tutorials/php/running-background-processes-in-php-349/ 里有更详细的介绍。