項目需要,場景如下:
某個條件下需要調(diào)用接口發(fā)送多個請求執(zhí)行腳本,但是由于每個請求下的腳本執(zhí)行時間在半個小時左右,所以 就放棄返回執(zhí)行結(jié)果,只要求能秒發(fā)送所以就可以。
代碼如下:
/** * 發(fā)起異步請求,忽略返回值 * @param $url 請求url * @return bool function asyncPost($url) $args = parse_url($url); //對url做下簡單處理 $host = $args[ host //獲取上報域名 $path = $args[ path ] . ? . $args[ query //獲取上報地址 $fp = fsockopen($host, 80, $error_code, $error_msg, 1); if (!$fp) { Log::record( 獲取錯誤信息: .$error_code . _ . $error_msg, Log::INFO, true); Log::save( ,LOG_PATH . _ . date( y_m_d ) . .txt return false;// } else { stream_set_blocking($fp, true);//開啟了手冊上說的非阻塞模式 stream_set_timeout($fp, 1);//設(shè)置超時 $header = GET $path HTTP/1.1/r/n //注意 GET/POST請求都行 我們需要自己按照要求拼裝Header http協(xié)議遵循1.1 $header .= Host: $host/r/n $header .= Connection: close/r/n/r/n //長連接關(guān)閉 fputs($fp, $header); fclose($fp); }
例子如下:
$url[0] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 $url[1] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 $url[2] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 $url[3] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 $url[4] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 $url[5] = http://XXXX/demo.php?a=1 b=2 c=3 d=4 e=5 foreach($url as $k= $val){ asyncPost($val);}
結(jié)果如下:
上述是我多次測試結(jié)果,時間范圍如上。
相關(guān)教程:PHP視頻教程
以上就是如何用PHP實現(xiàn)異步請求、忽略返回值的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
|
新聞熱點
疑難解答
圖片精選