经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
[PHP] php使用curl_multi_exec并行同时执行http请求
来源:cnblogs  作者:陶士涵  时间:2021/3/1 9:28:23  对本文有异议

当php代码要对外请求多个接口的时候 , 可以使用下面的方式并行执行多个请求

主要是使用curl_multi_exec函数实现

代码中请求的test.php文件 , 是sleep(10)秒

如果按传统的逐行执行的方式 , 请求两次这个接口代码会阻塞20秒的时间 , 现在使用同时并行执行的方式,代码只会阻塞10秒

并且请求也是会同时到达对方接口的

  1. <?php
  2. // 创建一对cURL资源
  3. $ch1 = curl_init();
  4. $ch2 = curl_init();
  5. // 设置URL和相应的选项
  6. curl_setopt($ch1, CURLOPT_URL, "http://81.69.45.114/test/test.php");
  7. curl_setopt($ch1, CURLOPT_HEADER, 0);
  8. curl_setopt($ch2, CURLOPT_URL, "http://81.69.45.114/test/test.php");
  9. curl_setopt($ch2, CURLOPT_HEADER, 0);
  10. // 创建批处理cURL句柄
  11. $mh = curl_multi_init();
  12. // 增加2个句柄
  13. curl_multi_add_handle($mh,$ch1);
  14. curl_multi_add_handle($mh,$ch2);
  15. $active = null;
  16. // 执行批处理句柄
  17. do {
  18. $mrc = curl_multi_exec($mh, $active);
  19. var_dump($mrc);
  20. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  21. while ($active && $mrc == CURLM_OK) {
  22. if (curl_multi_select($mh) != -1) {
  23. do {
  24. $mrc = curl_multi_exec($mh, $active);
  25. } while ($mrc == CURLM_CALL_MULTI_PERFORM);
  26. }
  27. }
  28. // 关闭全部句柄
  29. curl_multi_remove_handle($mh, $ch1);
  30. curl_multi_remove_handle($mh, $ch2);
  31. curl_multi_close($mh);

执行后nginx日志的展示:

 

 

原文链接:http://www.cnblogs.com/taoshihan/p/14453045.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号