3

Python スクリプトをトリガーしてバックグラウンドで実行し、その stdout と stderr をファイルにリダイレクトして後で読み取るようにしたい PHP ページがあります。

私は次のことを試しました:

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 に答える