我有一个PHP页面,我希望它能触发python脚本在后台运行,并将其stdout和stderr重定向到稍后要读取的文件。
我尝试了以下内容:
system('python -u /home/omar/workspace/test/test2.py > /home/omar/workspace/test/testfile &');
这样可以正常工作,因为PHP不会阻塞并且输出正确地写入文件。
但由于这只是stdout,我试着把&>而不是> :
system('python -u /home/omar/workspace/test/test2.py &> /home/omar/workspace/test/testfile &');
由于某种原因,这会导致页面被阻塞,并且python脚本的输出显示在PHP页面本身中,并且没有任何内容写入文件!
这种亵渎是否有理由?
答案 0 :(得分:2)
我这样解决了:
system('python -u test2.py > testfile 2>&1 & echo $!');
最后一点是获取python实例的pid。
答案 1 :(得分:0)
我认为您需要使用>&而不是&>
见下面的详细信息
“>” 中重定向标准输出
“>&安培;”重定向标准输出和标准错误
“<”重定向标准输入
“&GT ;!”重定向标准输出;覆盖文件(如果存在)
“>&安培;!”重定向标准输出和标准错误;覆盖文件(如果存在)
“|”将标准输出重定向到另一个命令(管道)
“>>” 中附加标准输出
“>>&安培;”附加标准输出和标准错误