美文网首页
利用PHP原生函数并行多线程处理(请求)网络数据

利用PHP原生函数并行多线程处理(请求)网络数据

作者: wushannn | 来源:发表于2018-05-08 22:53 被阅读0次

            最近在项目中碰到的一个问题,需要大量请求同一个第三方接口达到发送消息的目的。我们一般会想到的是利用curl循环依次请求接口,没错,当请求量较少的时候,完全能应付。倘若一旦请求量增大,会发现简单的循环请求方式并不能让我们如愿以偿,往往会拖慢程序的执行效率,甚至导致页面卡死的情况发生,这时候就得另辟蹊径了......                                          

            这时候可以用到的方法有很多,比如:redis+消息队列,popen(),fscokopen(),socket,swoole等等......严格意义上来说,php7以下不支持多线程,需要通过其它手段来进行模拟多线程。这里介绍一个简单好用的方法,利用curl的衍生函数curl_multi_init()。其在php手册上面的解释为:允许并行地处理批处理cURL句柄。

            贴上代码:

            关于此方法与curl循环的执行效率对比:curl_multi_init比curl_init快30倍。这里只做了100次请求的数据对比,但是如果网站并发量很大,每个访问请求同时发起几个或者更多的请求,负载随之就上来了,这里的访问速度是提升了,但访问极限量却减小了,所以这个方法适合访问数不多,但是要考虑访问效率的网站。

    相关文章

      网友评论

          本文标题:利用PHP原生函数并行多线程处理(请求)网络数据

          本文链接:https://www.haomeiwen.com/subject/hghwrftx.html