PHP单进程单线程如何达到每秒100次的百度首页抓取

赞赏 2017-06-01

使用PHP脚本实现每秒100次的百度首页抓取功能,极大提高网页数据的采集效率,谁说我大PHP采集数据慢到死来着,不服来辩


1.背景:

总所周知,NTS版本的PHP是不支持多线程的,毕竟NTS(非线程安全)嘛,有人会说那为何不用多进程呢?嗯,多进程是可以,但是你要考虑到进程通信这个老大难啊,我知道你可能接下来扩展出两个问题,第一个是进程通信的必要性,第二个是有哪些方式让进程之间进行高效通信。能这么想就对了,但是本文解决的问题是突破PHP单进程单线程利用网络进行数据采集的瓶颈而创作的,因此这俩问题就交给同学们自己去搜索答案了。

2.解决步骤:

2.1 打开:https://packagist.org

2.2 搜索curlmulti,找到一个满足自己需求的pkg并查看文档描述:https://packagist.org/packages/phpdr.net/php-curlmulti

2.3 写代码:

composer require phpdr.net/php-curlmulti

//消耗时间:17.40699505806

去掉file_put_contents并把采集到的内容放到全局数组里面去,发现耗时11秒,

目的基本达到,同学们可以根据自己的网络情况再进行自己的优化。


登陆后阅读全文
阅读 1645 赞赏 1 有用 4 没用 0 收藏 1 分享

注意事项

请保持网络环境通畅

   


作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。

0 条留言

月夜阁主的头像

月夜阁主

PHP技术大全作者

相关文章

Linux php-fpm报错:allow_call_time_pass_reference

如何配置php显示错误信息?

6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)

PHP Fatal error: Allowed memory size of bytes exhausted

Linux 服务器如何隐藏 PHP 版本号?

PHP 程序无法识别短标签

改了php.ini中的open_basedir仍报错open_basedir restriction in effect

原来这条命令可以让我们快速找到php.ini的位置

php call_user_fun Call-time pass-by-reference has been remov

php.ini 设置了 error_log 为什么不生效?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

PHP单进程单线程如何达到每秒100次的百度首页抓取

windows下恼人的composer安装与加速

有赞的zan framework安装与初步使用

手机扫一扫
分享文章