PHP pthreads 多线程 并发 的一些实践 总结
发布时间:2022-10-21 15:23:38 所属栏目:PHP教程 来源:
导读: 1.Windows下安装很成问题,版本库对应不全,比如我是Win7 64位系统,PHP 5.4 结果没有对应的包, 只能开了个虚拟机,win7x32+PHP5.3 装上了.
2.要注意: 线程的实现代码 写在run方法中, 但启动线程的方法是s
2.要注意: 线程的实现代码 写在run方法中, 但启动线程的方法是s
|
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.遇到一个古怪问题: 线程中 创建一个对象php单线程,构造时给对象的属性赋值,再回去取,值没了~~~ , 此问题不是必现的 (与时间无关,与代码相关), 我专门写了个测试例子,没出错. 3.最初我采用了纯 多线程 写了采集(不使用异步), 效率不好. 之后 我换了组合方式. 4.下周的工作,我要把线程这部分干掉,太不稳定了.采集就用异步就好. 吐个槽:有的程序员居然无法区分 异步与并发. 补充: 经过调试,以上问题2,已经解决,框架中另一个位置的一个隐藏BUG导致. 虚拟机上运行良好,尚未到服务器上运行. (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

