美文网首页
利用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原生函数并行多线程处理(请求)网络数据

    最近在项目中碰到的一个问题,需要大量请求同一个第三方接口达到发送消息的目的。我们一般会想到的是利用curl循环依次...

  • WideAndDeep

    性能上,通过切分一次请求需要处理的app 的Batch size为更小的size,并利用多线程并行请求达到提高处理...

  • 多线程面试

    首先分析多线程的使用环境: 多线程处理包括Core Data的多线程访问,UI的并行绘制,异步网络请求以及一些在运...

  • 多线程多进程线程池进程池

    利用并发处理来自客户端的请求, server端 线程池处理请求 多线程处理请求 telnet 10.0.122.1...

  • php socket异步

    在php中要想并行的同时请求多个api, 一种方法是curl_multi_exec , 这种方式php原生支持,使...

  • 并行编程(Parallel Framework)

    并行编程:通过编码方式利用多核或多处理器称为并行编程,多线程概念的一个子集。 并行处理:把正在执行的大量的任务分割...

  • iOS 全栈攻城狮(PHP) —— Session 4

    同步执行 PHP 是线程安全的,并且在一个请求的处理过程中是不支持多线程的。 对于网络请求来说,一个请求就是一个进...

  • scala使用par并行集合设置的线程池未关闭导致的内存占用问题

    问题产生背景 程序语言使用的是scala。在处理大量数据时,使用了par函数将普通集合转为并行集合集合,通过多线程...

  • swoole

    简介 swoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,...

  • NSURLSSion和NSURLConnection

    NSURLConnection系统原生的对网络数据的请求 使用NSURLSession做网络请求 NSURLSes...

网友评论

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

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