84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
刚看到一篇关于多进程通信的描述,里面扯到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
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
上用起来如何,也只能自己去摸爬了。