PHP pthreads 多线程 并发 的一些实践 总结

来源:互联网 发布:win10 淘宝激活码 编辑:程序博客网 时间:2024/06/05 12:41

1.Windows下安装很成问题,版本库对应不全,比如我是Win7 64位系统,PHP 5.4  结果没有对应的包, 只能开了个虚拟机,win7x32+PHP5.3 装上了.

2.要注意: 线程的实现代码 写在run方法中, 但启动线程的方法是start,  千万不要直接调用 run ,(这就变成了单线程)

3.如果可以,先实例出所有线程,再循环一次,逐一Start

4.线程中,SPL相关函数失效,最主要的是 spl_register_autoload , 这导致自动加载失效. 我的解决方案是 在未启动线程时,先把需要的类都加载.

5.pthreads 有个版本问题, 手册 上的大部分 类和方法都要求 2.0.0以上 , 我们运维最初安装的居然是0.4.4

6.我写了一个多线程+异步的采集程序.  花了一周,写了5个网站的采集.


给大家个出人意料的结论吧:

-------暂时还是先别用这个东西了,生产环境中有许多问题


1.频繁出现  memory leak

2.遇到一个古怪问题: 线程中 创建一个对象,构造时给对象的属性赋值,再回去取,值没了~~~ ,  此问题不是必现的 (与时间无关,与代码相关), 我专门写了个测试例子,没出错.

3.最初我采用了纯 多线程 写了采集(不使用异步),  效率不好.  之后 我换了组合方式.

4.下周的工作,我要把线程这部分干掉,太不稳定了.采集就用异步就好.


吐个槽:有的程序员居然无法区分 异步与并发.


补充:

    经过调试,以上问题2,已经解决,框架中另一个位置的一个隐藏BUG导致.

    虚拟机上运行良好,尚未到服务器上运行.

1 0
原创粉丝点击