我在php5.2上面运行一个自动发邮件的程序,一开始运行后,再点别的链接都开始在等待状态了。是否是因为php是单线程排队运行?
回复内容: 我在php5.2上面运行一个自动发邮件的程序,一开始运行后,再点别的链接都开始在等待状态了。是否是因为php是单线程排队运行?
拿php-fpm来说,不管是线程安全(ts)还是非线程安全(nts)版本,一个工作进程在同一时刻只能处理一个请求,要同时处理多个请求,则必须开启多个工作进程,比如在php-fpm.conf中配置开启5个pm.max_children = 5。
工作在线程化mpm(比如linux上的event,windows上的winnt)下的apache需要配合线程安全(ts)版php使用,这时,只要开启一个包含多个线程的apache进程就能同时处理多个php请求。
linux event mpm
startservers 3
minsparethreads 75
maxsparethreads 250
threadsperchild 25
maxrequestworkers 400
maxconnectionsperchild 0
windows winnt mpm
threadsperchild 150
maxconnectionsperchild 0
php-fpm和apache/php能不能同时处理多个请求,跟pthreads这个pecl扩展没有关系。
只能说php-fpm或者php-cgi不是多线程的
php本身是可以写多线程的
http://php.net/manual/zh/class.thread.php
用swoole吧,并发so easy
php不是多线程的啊
