ホームページ  >  記事  >  バックエンド開発  >  リダイレクト - php がシェル スクリプトを実行し、標準出力とエラー出力を取得します。

リダイレクト - php がシェル スクリプトを実行し、標準出力とエラー出力を取得します。

WBOY
WBOYオリジナル
2016-09-08 08:43:571928ブラウズ

1.質問

PHP コードでシェル スクリプトを実行し、標準出力 (stdout)エラー出力 (stderr) をそれぞれ取得する必要があります。シェルの redirect を使用して標準出力とエラー出力をファイルに配置し、php を使用してファイルを読み取ることは可能ですが、出力ファイルの内容は php に転送された後は不要になります。シェルの出力を変数にリダイレクトする方法は? スクリプトの機能を実行するには、PHP単体では完結できず(R言語でスクリプトを実行する)、通常出力とエラー出力の両方をフィードバックする必要があります。

2.すでに試しています

shell の

Redirection

は標準出力とエラー出力をそれぞれファイルに入れることができますが、一時ファイルを生成します。 リーリー 次に、php は

ファイルの内容を読み取り、それを返します。

out.txterr.txtこれの欠点: 中間ファイルが生成されます。シェルコマンド my_cmd の実行に長い時間がかかる場合 (おそらく数分)、同じユーザーが短期間に複数の http リクエストを開始すると、PHP は my_cmd を実行します。 code> を実行する必要があります。記述の競合を避けるために、それぞれの

の名前は異なります。これにより、

不要な中間ファイルが大量に生成されますmy_cmd执行的时间比较长(可能要几分钟),那么同一用户如果短时间内多次发起http请求使得php执行my_cmd,则需要每次out.txterr.txt。たとえ時間内に削除されたとしても、I/O オーバーヘッドは依然として存在しますが、これは回避できると期待されます。 phpの

関数:

リーリー exec()内部のパラメータは「スクリプト実行時の画面出力」の内容のみを取得するようですが、これはstdout、またはstdoutとstderrの混合であり、個別に取得することはできません。

$output返信内容:

1.質問

PHP コードでシェル スクリプトを実行し、

標準出力 (stdout)

エラー出力 (stderr) をそれぞれ取得する必要があります。シェルのリダイレクトを使用して標準出力とエラー出力をファイルに配置し、phpを使用してファイルを読み取ることは可能ですが、出力ファイルの内容はphpに転送された後は必要なくなります。シェルの出力を変数にリダイレクトする方法はありますか? スクリプトの機能を実行するには、PHP単体では完結できず(R言語でスクリプトを実行する)、通常出力とエラー出力の両方をフィードバックする必要があります。 2.すでに試しています

shell の

Redirection

は標準出力とエラー出力をそれぞれファイルに入れることができますが、一時ファイルを生成します。

リーリー 次に、

php は

ファイルの内容を読み取り、それを返します。 これの欠点: 中間ファイルが生成されます。シェルコマンド my_cmd の実行に長い時間がかかる場合 (おそらく数分)、同じユーザーが短期間に複数の http リクエストを開始すると、PHP は my_cmd を実行します。 code> を実行する必要があります。記述の競合を避けるために、それぞれの

の名前は異なります。これにより、

不要な中間ファイルが大量に生成されますout.txterr.txt。たとえ時間内に削除されたとしても、I/O オーバーヘッドは依然として存在しますが、これは回避できると期待されます。

phpのmy_cmd执行的时间比较长(可能要几分钟),那么同一用户如果短时间内多次发起http请求使得php执行my_cmd,则需要每次out.txterr.txt関数: リーリー 内部のパラメータは「スクリプト実行時の画面出力」の内容のみを取得するようですが、これはstdout、またはstdoutとstderrの混合であり、個別に取得することはできません。

exec()答えを見つけました。自分で質問して答えてください。

シェルスクリプトを実行し、stdoutとstderrをそれぞれ保存できる

関数を使用します。また、stdin:$outputの設定もサポートしています。 リーリー

参照コード:

リーリー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。