项目需要,场景如下:
某个条件下需要调用接口发送多个请求执行脚本,但是由于每个请求下的脚本执行时间在半个小时左右,所以 就放弃返回执行结果,只要求能秒发送所以就可以。
代码如下:
/** * 发起异步请求,忽略返回值 * @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);//设置超时 $header = GET $path HTTP/1.1/r/n //注意 GET/POST请求都行 我们需要自己按照要求拼装Header http协议遵循1.1 $header .= Host: $host/r/n $header .= Connection: close/r/n/r/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);}
结果如下:
上述是我多次测试结果,时间范围如上。
相关教程:PHP视频教程
以上就是如何用PHP实现异步请求、忽略返回值的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答