加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.dakongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-10-21 15:23:38 所属栏目:PHP教程 来源:
导读:  1.Windows下安装很成问题,版本库对应不全,比如我是Win7 64位系统,PHP 5.4 结果没有对应的包, 只能开了个虚拟机,win7x32+PHP5.3 装上了.

  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导致.
 
  虚拟机上运行良好,尚未到服务器上运行.
 

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!