PHP 写爬虫, curl_close 是不是不需要一直调用?

2019-05-15 09:38:47 +08:00
 kisshere

爬取各种页面:

//page 1
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,PAGE_1_URL);
curl_exec($ch);
curl_close($ch);
//然后爬取 page 2
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,PAGE_2_URL);
curl_exec($ch);
curl_close($ch);
//然后爬取 page 3
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,PAGE_2_URL);
curl_exec($ch);
curl_close($ch);

可不可以在代码开头写一个$ch = curl_init(); 所有页面爬完了再 curl_close($ch)?这样做是不是效率更高?

1898 次点击
所在节点    程序员
5 条回复
DavidNineRoc
2019-05-15 09:48:35 +08:00
这么简单的问题张口就来, 难不成你写一段代码不多块.


想要效率高, curl 提供多线程.多个执行不需要引用返回值考虑用: curl_multi_exec
benhuang1024
2019-05-15 12:42:51 +08:00
可以使用 Guzzle 软件包,进行异步,并发都挺不错
单纯的单页或指定部分页面爬虫,毛遂自荐下 [MasterCloner/Cornerstone]( https://github.com/MasterCloner/Cornerstone)
micookie
2019-05-15 14:11:15 +08:00
Guzzle +1

建议放弃 curl
ritaswc
2019-05-15 14:54:36 +08:00
放弃 curl 吧,时间宝贵
NjcyNzMzNDQ3
2019-05-15 16:51:39 +08:00
1.效率不会高。
2.cli 情况下运行会内存溢出,应该一个请求就 close。
3.curl 如果单进程单线程的话慢的很,可以试试 3L 的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/564245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX