本文给出了一个PHP curl批处理和多请求并发的例子。分享给大家参考,如下:
面试过程中出现了问题。加入一个网站并访问一次需要两秒钟。我们如何在大约两秒钟内请求三次?
面试官想问的是如何使用curl同时处理请求
但是在使用curl_multi时,可能会遇到cpu消耗高、网页假死等情况。你可以看到《PHP使用curl_multi_select解决curl_multi网页假死问题》。
第三步:连续调用curl_multi_exec第四步:循环调用curl_multi_getcontent获取结果第五步:调用curl_multi_remove_handle并为每个单词句柄调用curl_close第六步:调用curl _ multi _ close
Curl_multi_add_handle()向Curl批处理会话添加一个单独的curl handle资源。函数curl_multi_add_handle()有两个参数,第一个参数表示一个curl批处理句柄资源,第二个参数表示一个单独的curl句柄资源。
Curl_multi_exec()解析一个Curl批处理句柄。curl_multi_exec()的函数有两个参数。第一个参数表示批处理句柄资源,第二个参数是一个参考值参数,指示剩余要处理的单个curl句柄资源的数量。
Curl_multi_remove_handle()从Curl批处理句柄资源中移除句柄资源。curl_multi_remove_handle()函数有两个参数,第一个参数表示curl批处理句柄资源,第二个参数表示单个curl句柄资源。
Curl_multi_close()关闭批处理句柄资源。
Curl_multi_getcontent()在设置了CURLOPT_RETURNTRANSFER时返回获得的输出的文本流。
Curl_multi_info_read()获取当前解析的Curl的相关传输信息。
示例代码:
?Php//创建一对CUlR资源$ ch1=CUlR _ init();$ CH2=curl _ init();//设置URL和对应的选项curl _ setopt ($ ch1,curl opt _ URL,' http://www . example.com/');curl_setopt($ch1,CURLOPT_HEADER,0);curl_setopt($ch2,CURLOPT_URL,' http://www . PHP . net/');curl_setopt($ch2,CURLOPT_HEADER,0);//创建批处理cURL句柄$ MH=cURL _ multi _ init();//添加两个手柄curl_multi_add_handle($mh,$ ch1);curl_multi_add_handle($mh,$ CH2);$ running=null//执行批处理句柄do { us LEEP(10000);curl_multi_exec($mh,$ running);}同时运行($ 0);//关闭所有句柄curl _ multi _ remove _ handle ($ MH,$ ch1);curl_multi_remove_handle($mh,$ CH2);curl _ multi _ close($ MH);批量处理后得到结果:
字符串curl_multi_getcontent(资源$ch)
Ch是curl _ init()返回的CUlR句柄。
参考:
http://www.php.net/manual/zh/function.curl-multi-init.php
https://www.jb51.net/article/145660.htm
更多对PHP相关内容感兴趣的读者可以查看本网站专题:《php curl用法总结》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《PHP中json格式数据操作技巧汇总》、0103010
希望本文对PHP编程有所帮助。