PHPにはBashのようにジョブコントロールがありますか?
-
27-09-2019 - |
質問
PHPは、Ampersand in Bash(Forking)のようなものをサポートしていますか? 2つのWebページでCurlを同時に使用したかったので、スクリプトはFirst Curl Command Finnisesの前に待つ必要がないとしましょう。どのようにPHPでそれを達成できますか?バッシュでこのようなもの:
curl www.google.com &
curl www.yahoo.com &
wait
解決
PHPは、Ampersand in Bash(Forking)のようなものをサポートしていますか?
いいえ。 PCNTL拡張機能はUNIXのみであることを指摘していますが、他の回答をご覧ください。
...どのようにしてPHPでそれを達成できますか?*
Curlは、複数のダウンロードを同時に実行することをサポートします.
他のヒント
使用できます popen
また proc_open
プロセスを開いてバックグラウンドで実行することを行いますが、あるようなバックグラウンド操作の言語サポートはありません bash
(とにかくタスクを実行するように作られました; PHPはスクリプトのために作られました)。
Proc_openを使用して、使用できます proc_get_status
プロセスがいつ終了するかを知るため。ノーがあるのではないかと心配しています wait
同等。
あなたが本当に望むなら、あなたは非同期の方法を書くことができますが、それは多くの仕事であり、おそらくあなたがPHPを使用しているならひどいデザインのアイデアです。
多くの場合、ある種のキューイングメカニズムが望ましいです。 Gearmanは、使用できるオープンソースキューイングメカニズムです。また、Zend Serverのジョブキューに関するブログ投稿があります。これは、タスクの実行を非同期に実行することについて説明しています キューしますか? Zend Serverのジョブキューの紹介.
また、Zend Frameworkキューイングクラスのようなものを使用して、非同期作業の一部を実装することもできます。 Zend_Queue