3

我有一个 PHP 页面,我希望它触发一个 python 脚本在后台运行并将其 stdout 和 stderr 重定向到一个文件以供稍后读取。

我尝试了以下方法:

system('python -u /home/omar/workspace/test/test2.py > /home/omar/workspace/test/testfile &');

这很好用,因为 PHP 不会阻塞并且输出被正确地写入文件。

但由于这只是标准输出,我尝试使用 &> 而不是 > :

system('python -u /home/omar/workspace/test/test2.py &> /home/omar/workspace/test/testfile &');

出于某种原因,这会导致页面阻塞,python 脚本的输出显示在 PHP 页面本身中,并且没有任何内容写入文件!

这种亵渎是有原因的吗?

4

2 回答 2

2

我是这样解决的:

system('python -u test2.py > testfile 2>&1 & echo $!');

最后一点是获取python实例的pid。

于 2013-08-22T16:23:01.587 回答
0

我认为您需要使用 >& 而不是 &>

请参阅下面的详细信息

">" 重定向标准输出

">&" 重定向标准输出和标准错误

"<" 重定向标准输入

">!" 重定向标准输出;如果文件存在则覆盖文件

">&!" 重定向标准输出和标准错误;如果文件存在则覆盖文件

“|” 将标准输出重定向到另一个命令(管道)

">>" 附加标准输出

">>&" 附加标准输出和标准错误

于 2013-07-05T08:33:54.383 回答