PHP の非同期 HTTP リクエスト
応答性が高く効率的なアプリケーションに対する需要が高まる中、応答を待たずに HTTP リクエストを実行できる機能かけがえのないものになります。この手法により、開発者はイベントをトリガーしたり、長いプロセスを非同期に開始したりして、パフォーマンスとユーザー エクスペリエンスを最大化できます。
PHP では、fsockopen() 関数を使用してこれを実現する方法があります。この機能を使用すると、ユーザーはリモート ホストへのソケット接続を確立し、応答を待たずにデータを送信できます。 fsockopen() を使用して非同期 HTTP リクエストを実装する方法は次のとおりです。
function post_without_wait($url, $params) { // Parse the URL and prepare the request $parts = parse_url($url); $host = $parts['host']; $port = isset($parts['port']) ? $parts['port'] : 80; $path = $parts['path']; // Convert an array of parameters to a string $post_params = []; foreach ($params as $key => &$val) { if (is_array($val)) { $val = implode(',', $val); } $post_params[] = $key . '=' . urlencode($val); } $post_string = implode('&', $post_params); // Establish a socket connection $fp = fsockopen($host, $port, $errno, $errstr, 30); // Craft the HTTP request $out = "POST $path HTTP/1.1\r\n"; $out .= "Host: $host\r\n"; $out .= "Content-Type: application/x-www-form-urlencoded\r\n"; $out .= "Content-Length: " . strlen($post_string) . "\r\n"; $out .= "Connection: Close\r\n\r\n"; $out .= $post_string; // Send the request fwrite($fp, $out); // Close the socket connection fclose($fp); }
この関数は、応答を待たずに、HTTP POST リクエストを指定された URL に効果的に送信します。これは、イベントのトリガー、長時間実行プロセスの開始、または即時のフィードバックが必要ないシナリオの開始に利用できます。
以上がfsockopen() を使用して PHP で非同期 HTTP リクエストを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。