ホームページ  >  記事  >  バックエンド開発  >  PHPの非同期実行方法、マルチスレッドのシミュレート_PHPチュートリアル

PHPの非同期実行方法、マルチスレッドのシミュレート_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:17:26980ブラウズ

PHP の非同期実行メソッド、マルチスレッドをシミュレートします

PHP 自体にはマルチスレッドがありませんが、コマンドに限定される非同期呼び出しを実現するために複数のプロセスを使用するなど、曲線的な方法で同じ効果を生み出すことができます。モード。

Web プログラムで使用できるもっと簡単な方法もあります。つまり、fsockopen()、fputs() を使用して、要求されたページ (URL) の戻りを待たずに URL を要求することと同等です。非同期。

キーコードは次のとおりです:

リーリー

上記のコードは、リクエストを another_page.php ページに送信し、それを無視します。リクエストされたページの応答データを待つ必要はありません。これを使用して、リクエストされたページ another_page.php で何かを行うことができます。

たとえば、非常に実用的なアプリケーションでは、新しいブログを公開するたびに、次の通常の方法に従って、ブログの購読者全員に電子メール通知を送信する必要があります。

ログを書き込んだ後 -> 送信ボタンをクリック -> ログをデータベースに挿入 -> 公開の成功をメールで送信

その後、送信ボタンをクリックしてから成功のプロンプトが表示されるまでに、電子メール サービスへの接続が異常である、サーバーが遅いなどの理由で、作成者は長い時間がかかることがあります。または購読者が多すぎます。実際、メールの送信が成功したかどうかに関係なく、ログが正常に保存されていれば基本的に問題ないため、メールの送信を待つプロセスは非常に不経済です。このプロセスは非同期で実行できます。電子メール送信の結果は重要ではありません。または、フォームは将来の参照のために記録されます。

改善されたプロセスは次のとおりです:

ログを書き込んだ後 -> 送信ボタンをクリック -> 公開が成功したことを作者に通知 ->

実際のプログラムを書いてテストします。write.php と sendmail.php の 2 つのファイルがあります。sendmail.php で sleep(秒) を使用して、プログラムの実行にかかる時間をシミュレートします。

write.php、実行には 1 秒かかります:

リーリー

sendmail.php、実行には 10 秒かかります:

リーリー

ページ、ページ出力を通じて write.php にアクセスします:

1272472697

asyn_sendmailを呼び出す

1272472698

C:/: にファイルを生成します

1272472708

上記の結果から、sendmail.php には少なくとも 10 秒かかりますが、write.php の実行はブロックされず、このプロセスが非同期であることがわかります。

興味がありそうな記事

PHP の非同期デバッグと Web サイトプログラムのオンラインデバッグの方法
  • PHP URL クラスの Curl バッチマルチスレッドオープン
  • Web ページの閲覧速度を向上させる Javascript の非同期読み込み
  • PHP CURL_MULTI を使用して実装されます マルチスレッド
  • php プログラムは、ディレクトリ内のすべてのファイルを取得し、結果を配列に保存します
  • PHP は Curl 関数を使用して、マルチスレッド Web ページのクローリングとファイルのダウンロードを実装します
  • php は、curl を使用してマルチを実装します-スレッドクラス、phpカールマルチスレッドダウンロード画像
  • php HTMLのbr改行文字をテキスト入力の改行文字に変換する方法

http://www.bkjia.com/PHPjc/892342.html

tru​​ehttp://www.bkjia.com/PHPjc/892342.html技術記事 PHP の非同期実行メソッドは、マルチスレッドをシミュレートします。PHP 自体にはマルチスレッドがありませんが、複数のプロセスを使用して非同期呼び出しを実現するなど、同じ効果を曲線的に作り出すことができます。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。