扫码关注官方订阅号
刚看到一篇关于多进程通信的描述,里面扯到 pthreads:
pthreads
难道 pthreads 这个多线程扩展很多坑,各种不稳定??
人生最曼妙的风景,竟是内心的淡定与从容!
pthreads不可靠,主要是因为PHP的多线程支持本来就不可靠。PHP和其他很多软件一样,是主要针对Linux设计的,而Linux中使用进程的消耗并不是特别大,并且通讯、锁、信号量等问题已经又系统去实现了,并不需要程序自己去实现。
据我所知,除了Java、OC等这种主张和常用线程的编程语言以外,其他的编程语言对多线程其实都并不是特别友好。
所以,在PHP里用pnctl去操作多进程相对来说是更好的选择。
pnctl
php多线程在web模式下是伪多线程,确实不稳定。php只有在cli模式下使用多线程,才是真正意义上的多线程
php pthreads扩展
Windows版的PHP从版本5.2.1开始有Thread Safe和NoneThread Safe之分。Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
Zend Extension Build API320151012,TS,VC14 PHP Extension Build API20151012,TS,VC14
在phpinfo中查看
部分发行版自带的php需要重新编译,开启ts。例如centos。
有坑,不可控,跑的多了会报 段错。
pthreads 可是真正意义上的多线程,现有网上的大多资料都是 php5 时代的产物,要知道 php7 都出来好几年了,作者也早已经基于 php7 重写(PS. 链接 )了。所以,至于 php7 上用起来如何,也只能自己去摸爬了。
php5
php7
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
pthreads不可靠,主要是因为PHP的多线程支持本来就不可靠。PHP和其他很多软件一样,是主要针对Linux设计的,而Linux中使用进程的消耗并不是特别大,并且通讯、锁、信号量等问题已经又系统去实现了,并不需要程序自己去实现。据我所知,除了Java、OC等这种主张和常用线程的编程语言以外,其他的编程语言对多线程其实都并不是特别友好。
所以,在PHP里用
pnctl去操作多进程相对来说是更好的选择。php多线程在web模式下是伪多线程,确实不稳定。php只有在cli模式下使用多线程,才是真正意义上的多线程
php pthreads扩展
Windows版的PHP从版本5.2.1开始有Thread Safe和NoneThread Safe之分。
Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。
Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
在phpinfo中查看
部分发行版自带的php需要重新编译,开启ts。例如centos。
有坑,不可控,跑的多了会报 段错。
pthreads可是真正意义上的多线程,现有网上的大多资料都是php5时代的产物,要知道php7都出来好几年了,作者也早已经基于php7重写(PS. 链接 )了。所以,至于
php7上用起来如何,也只能自己去摸爬了。