この記事では、PHP プログラミングにおける 5 つの同時実行方法を大まかにまとめています:
1.curl_multi_init
ドキュメントには、複数の cURL ハンドルの非同期処理を許可すると書かれていますが、これは実際に非同期です。ここで理解する必要があるのは select メソッドです。これについては、curl_multi 接続のいずれかでアクティビティが発生するまでブロックするというドキュメントで説明されています。一般的な非同期モデルを理解していれば理解できるはずですが、selectとepollはどれも有名です
ここで設定したのは、select が結果を取得したときにループを終了し、http リクエストをキャンセルするために、curl リソースを削除することです。
2.swoole_client
swoole_client は非同期モードを提供します。実はこれを忘れていました。ここでのスリープ方法では、swoole バージョンが 1.7.21 以上である必要があります。私はまだこのバージョンにアップグレードしていないので、直接終了できます。
3.プロセス
swoole_process のことをほとんど忘れていました。ここでは pcntl モジュールは必要ありません。しかし、書いてみると、これは実際には割り込み要求ではなく、最初に来たものが読み取られ、その後の戻り値は無視されることがわかりました。
4.pthreads
pthreads モジュールをコンパイルすると、PHP をコンパイルするときに ZTS をオンにする必要があるというメッセージが表示されるため、wamp の多くの PHP はたまたま TS であるため、dll を直接ダウンロードしました。ドキュメントを対応するディレクトリにコピーし、次に win でテストします。 まだよく理解できていないのですが、PHPのpthreadとPOSIXのpthreadは全く違うという記事を見つけました。コードは少し悪いので、感触を得るにはもっとドキュメントを読む必要があります。
5.収量
同期的な方法で非同期コードを作成します:
コード解釈:
PHP の組み込み配列機能を使用して、シンプルな「タイムアウト管理」を実現し、タイム スライスとしてミリ秒の精度を使用します。
AsyncSendRecv インターフェイスをカプセル化し、yield AsyncSendRecv() の形式で呼び出します。これはより自然です。
エラー処理メカニズムとして例外を追加する ret_code を追加することもできますが、これはデモンストレーションのみを目的としています。
興味がありそうな記事: phpのセッションロックと同時実行性
http://www.bkjia.com/PHPjc/1113733.html