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中文網其他相關文章!