我需要在PHP文件中调用后台运行Python脚本。 PHP文件应该继续独立于Python脚本运行(即不应该等待Python脚本完成处理,而应该继续进行处理)。从PHP文件在后台运行Python脚本
Python脚本接受一个参数并且不产生输出(它仅处理背景中的一些数据),然后退出。我正在运行Python 2.6,PHP 5.2.6和Ubuntu 9.04。
我需要在PHP文件中调用后台运行Python脚本。 PHP文件应该继续独立于Python脚本运行(即不应该等待Python脚本完成处理,而应该继续进行处理)。从PHP文件在后台运行Python脚本
Python脚本接受一个参数并且不产生输出(它仅处理背景中的一些数据),然后退出。我正在运行Python 2.6,PHP 5.2.6和Ubuntu 9.04。
您可以使用exec()来启动Python interperator,并通过重定向将其输出发送到文件或/ dev/null。在exec调用中使用&运算符将导致该命令启动并且PHP不会等待结果。
http://www.developertutorials.com/tutorials/php/running-background-processes-in-php-349/更详细。
我猜PHP文件是通过Apache调用的,在这种情况下你将无法使用fork()
。你应该让你的Python脚本守护进程。退房python-daemon。
你可以使用:
<?php
shell_exec('./test.sh &');
?>
其中./test.sh
应执行行脚本
请注意,这可以创建僵尸进程。 – Felix 2011-03-11 13:05:41
PHP流程控制可以用于此目的。 proc_open
命令可用于启动进程。你可以稍后检查它,阅读它的输出等。 查看说明书条目:http://www.php.net/manual/en/function.proc-open.php并在PHP过程控制谷歌搜索
这似乎是我一直在寻找的答案。非常感谢! (在时间限制结束时将接受答案) – johneth 2011-03-11 13:06:17
正如我在其他答案中提到使用&符号('&'),请注意,这可能会创建僵尸进程。正如我所建议的那样,让Python脚本守护进程会更安全。 – Felix 2011-03-11 13:14:34