`

PHP模拟多线程请求

阅读更多
PHP模拟多线程请求

<?php
multi_threads_request($nodes){
		$mh = curl_multi_init();
		$curl_array = array();
		foreach($nodes as $i => $url)
		{
			$curl_array[$i] = curl_init($url);
			curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
			curl_multi_add_handle($mh, $curl_array[$i]);
		}
		$running = NULL;
		do {
			usleep(10000);
		    curl_multi_exec($mh,$running);
		} while($running > 0);
		
		$res = array();
		foreach($nodes as $i => $url)
		{
			$res[$url] = curl_multi_getcontent($curl_array[$i]);
		}
		
		foreach($nodes as $i => $url){
			curl_multi_remove_handle($mh, $curl_array[$i]);
		}
		curl_multi_close($mh);		
		return $res;
}

print_r(multi_threads_request(array(
    'http://www.163.com',
    'http://www.baidu.com',
));
 

 

分享到:
评论

相关推荐

    浅谈php使用curl模拟多线程发送请求

    每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求。php的curl多线程是通过不断调用curl_multi_exec来获取内容,这里举一个demo来模拟...

    php网络请求类多线程带缓存

    基于 https://github.com/php-curl-class/php-curl-class 的php http请求类,适用于抓包及数据采集模拟请求,php cli模式下运行效果更好 注意:先 composer require php-curl-class/php-curl-class

    实现PHP多线程异步请求的3种方法

    在网上看过很多版本的PHP异步请求方法,这里简单总结几个常用方法分享给大家 1、用CURL实现一步请求 CURL扩展是我们在开发过程中最常用的一种方法,他是一个强大的HTTP命令行工具,可以模拟POST/GET等HTTP请求,然后...

    利用curl 多线程 模拟 并发的详解

    首先,先了解下 php中的curl多线程函数:复制代码 代码如下:# curl_multi_add_handle# curl_multi_close# curl_multi_exec# curl_multi_getcontent# curl_multi_info_read# curl_multi_init# curl_multi_remove_...

    PHP 异步执行方法,模拟多线程的应用分析

    PHP 本身没有多线程的东西,但可以曲线的办法来造就出同样的效果,比如多进程的方式来达到异步调用,只限于命令模式。另外还有一种更简单的方式可用于 Web 程序中,那就是用 fsockopen&#40;&#41;、fputs() 来请求一...

    PHP多线程模拟实现秒杀抢单

    应集团要求给服务号做了个抢单秒杀的功能,需要对秒杀做个测试,想试试PHP多线程,就模拟了下抢单功能。 先说秒杀模块的思路: 正常情况下的用户秒杀操作 1、发起秒杀请求 2、进入秒杀队列 3、随机滞后 1 – 2 秒...

    PHP使用CURL实现多线程抓取网页

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,受限于php语言本身不支持多线程,所以开发爬虫程序效率并不高,这时候往往需 要借助Curl Multi Functions 它可以实现并发...

    php结合curl实现多线程抓取

    PHP利用 Curl可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等,然而因为php语言本身不支持多线程,所以开发爬虫程序效率并不高,因此经常需要借助Curl Multi Functions 这个功能实现并发多线程的...

    PHP多线程抓取网页实现代码

    PHP 利用 Curl Functions 可以完成各种传送文件操作,比如模拟浏览器发送GET,POST请求等等。

    QueryList:渐进式PHP搜寻器框架!优雅的渐进式PHP采集框架

    多线程爬网 抓取JavaScript动态呈现页面(PhantomJS /无头WebKit) 图片下载到本地 模拟浏览器行为,例如提交表单表单 网络爬虫 ..... 要求 PHP&gt; = 7.1 安装 通过Composer安装: composer requir

    php-shared-memory:跨多个 PHP 应用程序共享变量

    php共享内存 跨多个 PHP 应用程序共享变量 ... 多任务:PHP没有内置线程函数,所以如果我们需要模拟线程,我们会执行多个PHP任务(fork, execs, ...),并保持对资源和结果的控制。 但是从这里开始,所有子进程都

    浅析php如何实现爬取数据原理

    官方网站站点:简单、 ...拥有丰富的插件,支持多线程采集以及使用PhantomJS采集JavaScript动态渲染的页面。 安装 通过Composer安装: composer require jaeger/querylist 使用教程: 直接上代码: &lt;?php includ

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    8.13 使用线程化提高性能 189 第9章 查找设计缺陷 191 9.1 绕过必需的导航 192 9.2 尝试特权操作 194 9.3 滥用密码恢复 195 9.4 滥用可预测的标识符 197 9.5 预测凭证 199 9.6 找出应用中的随机数 200 9.7 测试...

    JAVA上百实例源码以及开源项目源代码

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

    JAVA上百实例源码以及开源项目

     当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。  QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新...

Global site tag (gtag.js) - Google Analytics