linux下PHP 批量抓取,进程超时

发布于 2021-11-29 23:30:06 字数 1786 浏览 880 评论 11

一次执行 100个PHP进程,为什么只有一部份在运行,还有一些一直没有动,我用strace -p PID 看到的都是类似这样的:

[user@server ~]$ sudo strace -p 29559
Process 29559 attached - interrupt to quit
poll([{fd=7, events=POLLIN}], 1, 1000)  = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 0)     = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 1000)  = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 0)     = 0 (Timeout) 
poll([{fd=7, events=POLLIN}], 1, 1000)  = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 0)     = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 1000)  = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 0)     = 0 (Timeout)
poll([{fd=7, events=POLLIN}], 1, 1000)  = 0 (Timeout)

linux命令行下执行的PHP是这样的:

php test.php 0,100
php test.php 100,100 
php test.php 200,100 
php test.php 300,100 
php test.php 400,100 
php test.php 500,100 
php test.php 600,100 
....

这样的批量运行了有尽100个,test.php 里是用curl抓取网页的;  

php-fpm 我设置了超时时间为0 :

slowlog = log/$pool.log.slow
request_slowlog_timeout = 3s
request_terminate_timeout = 0
log.slow中没有日志记录


php文中里CURL函数部分:

$ch = curl_init(); 
$user_agent1='Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0';
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
$content =curl_exec($ch); 
curl_close($ch);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(11

心欲静而疯不止 2021-12-01 17:32:07

http://www.jianshu.com/p/8a247cae629a

参考下这个

情场扛把子 2021-12-01 17:32:04

逻辑太简单了,得改

瀞厅☆埖开 2021-12-01 17:31:57

正确

甜扑 2021-12-01 17:31:19

好的,我试试看,谢谢

别低头,皇冠会掉 2021-12-01 17:31:05

好厉害。学习。

情场扛把子 2021-12-01 17:30:54

curl阻塞了,进程就死掉了,你可以参考
http://www.oschina.net/question/54100_58279重写你的抓取逻辑,python,node-js所谓的适合采集也无非就是使用了异步非阻塞模式,php也可以使用异步非阻塞模式,效率同样很高,我曾经用过python的开源爬虫scrapy,并在上面做了大量的二次开发,scrapy使用的twisted异步网络库实现异步,在vps上测试1小时可以抓取3w个网页,我用php使用异步来做,效率完全不差

狠疯拽 2021-12-01 16:40:56

用其他语言吧

躲猫猫 2021-12-01 15:11:09

技术能力有线,c不懂!

惜醉颜 2021-12-01 15:03:47

最好的是c/c++,用线程并发

瑾夏年华 2021-12-01 14:43:34

脚本语言都不适应

晚风撩人 2021-12-01 09:52:28

兄弟改用python或node.js吧,php并不适合做这样的工作。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文