ホームページ > バックエンド開発 > PHPチュートリアル > PHP でシェル コマンドを非同期に実行するにはどうすればよいですか?

PHP でシェル コマンドを非同期に実行するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-31 00:19:10
オリジナル
602 人が閲覧しました

How Can I Execute Shell Commands Asynchronously in PHP?

PHP でのシェル コマンドの非同期実行

PHP を使用してシェル スクリプトを実行する場合、多くの場合、PHP の実行をブロックせずに非同期操作を実行することが望ましいです。これは、PHP リクエストを遅らせる必要のない長時間のプロセスに特に役立ちます。

PHP には、exec()、shell_exec()、pcntl_fork() などのシェル実行用のさまざまな関数が用意されていますが、必要な関数を直接提供するものはありません。非同期動作。ただし、これをエミュレートできるアプローチがいくつかあります。

'&'**

でバックグラウンド プロセスを使用する PHP スクリプトが、シェル スクリプトの場合、& 演算子を使用してバックグラウンドで実行できます:

exec('path/to/script.sh &');
ログイン後にコピー

このコマンドは、別のプロセスでスクリプトを実行します。すぐに PHP スクリプトに戻り、実行を継続できます。

標準出力とエラー (/dev/null) のリダイレクト

からの出力を完全に抑制するにはシェルスクリプト、> /dev/null 2>/dev/null & 式は exec() コマンドに追加できます:

exec('path/to/script.sh > /dev/null 2>/dev/null &');
ログイン後にコピー

これにより、標準出力 (stdout) と標準エラー (stderr) の両方が /dev/null にリダイレクトされます。 、PHP リクエストからスクリプトの出力を効果的に隠します。

代替リダイレクト構文

出力をリダイレクトするための代替構文は、&> を使用することです。 /dev/null &:

exec('path/to/script.sh &> /dev/null &');
ログイン後にコピー

これは > と同じ効果があります。 /dev/null 構文は使用されますが、単一の式でリダイレクトとバックグラウンドを組み合わせます。

これらの手法を実装すると、PHP スクリプトはシェル スクリプトを非同期で実行できるようになり、シェル スクリプトの実行を待たずに PHP リクエストの実行を継続できるようになります。完了しました。

以上がPHP でシェル コマンドを非同期に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート