php多线程抓取网页(+异步的采集程序-上海怡健医学)
优采云 发布时间: 2022-01-28 08:01php多线程抓取网页(+异步的采集程序-上海怡健医学)
1.windows下安装很成问题,版本库不完全对应,比如我是win7 64位系统,php 5.4 结果没有对应的包,所以我只能打开一个虚拟机,安装的是win7x32+PHP5.3。
2.注意:线程的实现代码写在run方法中,但是启动线程的方法是start,不要直接调用run,(这样变成单线程了)
3.如果可能的话,先实例化所有线程,然后再循环,一个一个开始
4.线程中,SPL相关函数失败,最重要的是spl_register_autoload,导致自动加载失败。我的解决方案是在线程未启动时首先加载所有必需的类。
5.pthreads有版本问题,手册中大部分类和方法都需要2.0.0以上,我们运维原来安装的0.4.@ >4
6.我写了一个多线程+异步的采集程序。网站 中的 5 个 采集 花了一周的时间。
让我给你一个惊人的结论:
--------暂时不要用这个东西,生产环境有很多问题
1. 频繁的内存泄漏
2.遇到一个奇怪的问题:在线程中创建一个对象,在构造的时候给对象的属性赋值,然后回去取回,值就没了~~~,这个问题不不可避免(与时间无关,与代码有关),我特地写了一个测试示例,没有错误。
3.一开始我用纯多线程写采集(不使用async),效率不高。然后我改变了组合方法。
4.下周的工作,我要摆脱线程部分,它太不稳定了。采集只使用异步。
吐槽:有些程序员分不清异步和并发。
补充:
经过调试,上述问题2已经解决,是由于框架中另一个位置的隐藏bug造成的。
它在虚拟机上运行良好,但尚未在服务器上运行。