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