V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  wyan453351466  ›  全部回复第 3 页 / 共 12 页
回复总数  224
1  2  3  4  5  6  7  8  9  10 ... 12  
2018-07-16 09:47:28 +08:00
回复了 showecho 创建的主题 程序员 [小调查] 有多少程序员有自己的展示作品?
晒一下自己的吧

小项目: 言说 - https://www.yanshuo.me

开源项目: xcrawler 爬虫框架 - https://github.com/yan68/xcrawler
@gouchaoer nts 版本不等于不能开启多线程,好吧? 选择 ts 版本还是 nts 版本 主要是跟使用的服务器( IIS、Nginx )的不同有关系。
@wyan453351466 *如果 curl multi 不是多线程,请求速度和 curl 一致, 那它存在的意义是什么?
@gouchaoer ts 版本是线程安全版本,nts 版本是线程不安全版本。这个和是不是多线程有什么关系?
如果 curl multi 不是多线程,请求速度和 curl 那它存在的意义是什么?

老哥,建议你先搞清楚 ts 版本和 nts 版本的区别:

https://blog.csdn.net/qq_31643343/article/details/48996735
@ucaime 注意关键字“可能”。
@gouchaoer

Curl multi 不是多线程,那 multi 的意义何在?
开 100 个并行请求如果和不开一样,还要这个干嘛?

我知道回调函数是串行执行的,但是在请求这个部分请您回答是不是并行。如果是并行,不是多线程,请您解释下是什么。
http://php.net/manual/zh/function.curl-multi-init.php
@gouchaoer 所以说直接用 guzzle 写爬虫不方便啊。失败重试要自己写,判断是哪个请求还要自己用数组和 index 判断。而且这个方法在请求数量很大的时候还不适用。
没听懂你说的 Guzzle 不支持多线程,多并发请求不是多线程吗
并发请求不是多线程吗


直接数组,如果请求网址多呢
@happywowwow 谢谢。。回头抽空补一下
@gouchaoer 直接用 guzzle 的话,有一个主要问题是,guzzle 框架缺少请求失败重试功能,还有一个是 guzzle 多线程请求的时候,返回结果的回调函数无法得知这个结果对应的是哪个请求。

主要是有这两个小缺憾。写爬虫时可能会用到的。
@gouchaoer 这里补充一下。xcrawler 的回调函数不是异步执行的。是同步的哈。。

xcrawler 的异步并行执行,目前仅仅是在请求阶段(利用的 php 的 curl_multi 系列函数)
@xiaoz 文档的前端是使用的 hexo 官网( GitHub 上开源的),然后用 PHP 搭一个简单的框架。引入一个 Markdown 的 composer 包就 OK 了
@gouchaoer

多线程是用的 curl_multi 系列的函数实现的。

使用 redis 主要目的是为了实现失败重试和断点续爬这两个功能

多进程的话,消耗要比多线程要大不少的吧。所以性能要逊色与多线程一些。。
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5688 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 19ms · UTC 07:35 · PVG 15:35 · LAX 23:35 · JFK 02:35
Developed with CodeLauncher
♥ Do have faith in what you're doing.