PHP の非同期 GET リクエスト: 詳細ガイド
概要
非同期 GET リクエストの実行PHP では、スクリプトを使用せずにリモート サーバーへのリクエストを開始できます。現在の実行フローをブロックします。これは、ユーザーの操作を妨げることなく多数のリクエストを送信する必要がある Web アプリケーションにとって非常に有益です。
非同期リクエストでの file_get_contents() の使用
file_get_contents() は、組み込みの同期および非同期の両方の GET リクエストに利用できる PHP 関数。デフォルトでは、同期的に動作し、リクエストが完了するまでスクリプトをブロックします。ただし、オプションのコンテキスト引数を指定すると、非同期操作が可能になります。
同期リクエスト:
$output = file_get_contents('http://www.example.com/'); echo $output;
非同期リクエスト:
$context = stream_context_create([ 'http' => [ 'ignore_errors' => true ] ]); $output = file_get_contents('http://www.example.com/', false, $context);
真の非同期リクエストに fsockopen() を使用する
file_get_contents() の非同期動作さえ望ましくない状況の場合fsockopen() は、true を達成するための下位レベルのアプローチを提供します。非同期性。この関数により、直接ソケット通信が可能になります。
fsockopen() を使用した非同期リクエスト:
function curl_post_async($url) { // 1. Parse URL $parts = parse_url($url); // 2. Open Socket $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); // 3. Construct Request $out = "GET " . $parts['path'] . " HTTP/1.1\r\n"; $out .= "Host: " . $parts['host'] . "\r\n"; $out .= "Connection: Close\r\n\r\n"; // 4. Send Request and Close Socket fwrite($fp, $out); fclose($fp); }
この関数は、GET リクエストを即座に起動します。 、応答を待たずに呼び出し元に制御を返します。 fsockopen() を使用するには、file_get_contents() に比べてより実践的なアプローチが必要であることに注意することが重要です。
以上がPHP で非同期 GET リクエストを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。