>  기사  >  백엔드 개발  >  apache - php是多线程的吗?

apache - php是多线程的吗?

WBOY
WBOY원래의
2016-06-06 20:36:391381검색

我在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不是多线程的啊

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.