PHP の非同期 HTTP リクエスト
特定の状況では、サーバーの応答を待たずに HTTP リクエストを開始する必要がある場合があります。このアプローチは、アプリケーション内でイベントや非同期プロセスをトリガーする場合に特に役立ちます。
次の手法を使用すると、コードの実行をブロックせずに PHP で HTTP リクエストを作成できます。
使用fsockopen
PHP の fsockopen 関数を使用して、リモートとのソケット接続を確立できます。サーバー。接続すると、fwrite を使用してデータをサーバーに送信できます。ただし、応答を待つ代わりに、接続をすぐに閉じて、リクエストを非同期で完了させることもできます。
非同期 HTTP POST リクエストを実行する関数の例を次に示します。
function post_without_wait($url, $params) { // Convert parameters to a string $post_string = http_build_query($params); // Parse the URL $parts = parse_url($url); // Open a socket connection $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30); // Construct and send the HTTP request $request = "POST " . $parts['path'] . " HTTP/1.1\r\n"; $request .= "Host: " . $parts['host'] . "\r\n"; $request .= "Content-Type: application/x-www-form-urlencoded\r\n"; $request .= "Content-Length: " . strlen($post_string) . "\r\n"; $request .= "Connection: Close\r\n\r\n"; if (isset($post_string)) { $request .= $post_string; } fwrite($fp, $request); // Close the socket connection fclose($fp); }
この関数を使用すると、サーバーの応答を待たずに HTTP リクエストをトリガーできます。サーバーの応答はアプリケーションでは利用できないため、それ以降の処理ではサーバーの応答に依存しないことが重要であることに注意してください。
以上が実行をブロックせずに PHP で非同期 HTTP リクエストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。