您好,登錄后才能下訂單哦!
這篇文章主要介紹了PHP使用fsockopen實現異步請求的方法,具有一定借鑒價值,需要的朋友可以參考下。如下資料是關于實現異步請求的詳細步驟內容。
我們創建了一個基于fsockopen的函數,這個函數中利用fsockopen去訪問url,但是在訪問時,并不要求獲取url顯示的內容,而是僅僅發出訪問請求,請求到達后馬上關閉這個訪問。
這樣做的好處就是無需再等待被訪問的url是否返回了可靠的信息,節約了時間,這段代碼的執行時間在0.1-0.2秒之間,對于普通訪客而言,幾乎察覺不到。因此,在使用時,僅需要調用這個函數和對應的url即可。不過,這里并沒有提供數據傳輸的部分,如何傳輸數據,其實只需要在$header中增加post的內容即可。
/** * @生生 2018/12/24 19:25:06 * [asynchronous PHP異步執行任務] * @param string $url 執行任務的url地址 * @param array $post_data 需要post提交的數據POST * @param array $cookie cookie數據用于登錄等的設置(此處內部調用,無需鑒權) * @return boole */ public function asynchronous($url,$post_data = array()) { $url_array = parse_url($url); dump($url_array); //用fsockopen()嘗試連接 $fp = fsockopen($url_array['host'], 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { //建立成功后,向服務器寫入數據 $getPath = isset($url_array['path']) ? $url_array['path'] : '/'; $out = "GET /".$getPath."/ HTTP/1.1\r\n"; $out .= "Host:".$url_array['host']."\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); /*忽略執行結果 while (!feof($fp)) { echo fgets($fp, 128); }*/ //關閉鏈接 fclose($fp); } }
調用方法
/** * 異步方法 * 參數:(string)要執行的方法url,(array)傳入參數 */ function yibu(){ $this->asynchronous('https://www.liqingbo.cn/index.php/admin/index/test',['1'=>'haha']); //直接返回結果 echo '操作成功'; }
以上就是PHP使用fsockopen實現異步請求的方法介紹,詳細使用情況還得要大家自己使用過才能知道具體要領。如果想閱讀更多相關內容的文章,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。