PHP は bash のアンパサンドのようなもの (フォーク) をサポートしていますか? 2 つの Web ページで同時に cURL を使用したいとしましょう。スクリプトは最初の cURL コマンドが終了するまで待機する必要がありません。PHP でそれを実現するにはどうすればよいでしょうか? bashで次のようなもの:
curl www.google.com &
curl www.yahoo.com &
wait
PHP は bash のアンパサンドのようなもの (フォーク) をサポートしていますか? 2 つの Web ページで同時に cURL を使用したいとしましょう。スクリプトは最初の cURL コマンドが終了するまで待機する必要がありません。PHP でそれを実現するにはどうすればよいでしょうか? bashで次のようなもの:
curl www.google.com &
curl www.yahoo.com &
wait
PHP は bash のアンパサンドのようなもの (フォーク) をサポートしていますか?
いいえ。他の回答を参照してください。ただし、PCNTL 拡張機能は UNIX のみであることを指摘します。
...PHP でそれを実現するにはどうすればよいでしょうか?*
cURL は、複数のダウンロードの同時実行をサポートしています。
popen
またはを使用proc_open
してプロセスを開いてバックグラウンドで実行することはできますが、バックグラウンド操作の言語サポートはありませんbash
(とにかく、タスクを実行するために作成されました。PHP はスクリプト作成用に作成されました)。
proc_open を使用proc_get_status
すると、プロセスがいつ終了したかを知ることができます。wait
同等のものはないと思います。
多くの場合、ある種のキューイング メカニズムが推奨されます。Gearman は、使用できるオープン ソースのキューイング メカニズムです。Zend Server Job Queue に関するブログ投稿もあり、非同期でタスクを実行することについて説明しています。Zend Server ジョブ キューの紹介。
Zend Framework のキューイング クラスのようなものを使用して、非同期作業の一部を実装することもできます。 Zend_Queue
必要に応じて非同期メソッドを作成することもできますが、これは大変な作業であり、PHP を使用している場合はおそらくひどい設計思想です。