为什么PHP不支持多线程?

sky*_*der 4 php multithreading language-design

我到处都读过PHP不支持多线程,但有一些解决方法.但是为什么 PHP不支持多线程?对于服务器端脚本语言,这似乎是一个明显的遗漏.

Abi*_*ain 10

阅读此网址我认为这对您有帮助.

PHP多线程 - 伪造它

http://w-shadow.com/blog/2007/08/20/php-multithreading-faking-it/

PHP本身并不支持多线程,但有一些方法可以进行"假"多线程.这是我在PHPClasses.org时事通讯中看到的一个 -

多线程模拟.

请注意,此类是在Web服务器上使用的intendnd,而不是从命令行(或类似)运行PHP脚本.如果您使用PHP作为独立的脚本语言,请查看本文末尾的一些替代方案.


jny*_*len -3

几年后编辑:您可以使用pthreadsPHP 多线程,但您真的想这样做吗?

我不确定是否pthreads在许多托管环境中可用。坦率地说,我并不急于找出答案。

对于许多应用程序来说,PHP 的最大优势之一是它的隔离性:一个进程,一个请求。多处理通常是通过在请求期间对作业进行排队并在其他地方执行来完成的。例如,Laravel 有“队列”: https://laravel.com/docs/5.7/queues


因为 PHP 在编写时并未考虑到多线程,并且添加它需要付出巨大的努力(基本上是 100% 重写)。

有人会说 PHP 几乎是一大堆: http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/。从这个角度来看,不包括线程也就不足为奇了。

  • PHP 最初是 Rasmus 的一个特定目的的个人项目,用于跟踪对其在线简历的访问:http://www.php.net/manual/en/history.php.php。从那里它成长为“其他”的东西。 (4认同)
  • @jnylen 这似乎是一个非常糟糕的答案。PHP 自 2012 年起就提供了多线程功能。请查看 [**Pthreads**](http://pthreads.org)。[**PHP App Server**](http://www.appserver.io) 也是使用 pthreads 构建的。 (2认同)