ホームページ > バックエンド開発 > PHPチュートリアル > 実行をブロックせずに PHP で非同期 HTTP リクエストを作成するにはどうすればよいですか?

実行をブロックせずに PHP で非同期 HTTP リクエストを作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-27 00:05:11
オリジナル
444 人が閲覧しました

How Can I Make Asynchronous HTTP Requests in PHP Without Blocking Execution?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート