【问题标题】:Why does PHP not support multithreading? [closed]为什么 PHP 不支持多线程? [关闭]
【发布时间】:2012-08-27 19:18:20
【问题描述】:

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

【问题讨论】:

  • 我想你说的脚本语言是正确的。它并不是真正意义上的问题的全面解决方案,它更像是一种胶水。如果您正在做一些需要线程的事情,那么最好使用比 PHP 更注重性能的东西。 PHP 是……呃……古怪,因为缺少一个不那么冒犯的术语。
  • 嗯...Python 通常被认为是“脚本”(尽管它与成熟的 PL 混淆了界限)。和 AFAIK,你可以在 Python 中使用线程,甚至在 web-dev 中,对吗? docs.python.org/library/threading.html
  • 你可以。 python中的线程有点残缺。但是,同样的规则也适用,如果你正在做一些非常注重效率的事情,python 不是一个好的选择。 Python 至少被普遍认为比 PHP 设计得更好。

标签: php multithreading language-design


【解决方案1】:

阅读这个网址,我认为它对你很有帮助。

PHP 多线程 – 伪装

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

PHP 本身并不真正支持多线程,但有一些方法可以实现“假”多线程。这是我在 PHPClasses.org 时事通讯中看到的——

Multi-thread Simulation.

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

【讨论】:

    【解决方案2】:

    几年后编辑:您可以将pthreads 用于 PHP 多线程,但您真的想要吗?

    我不确定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 跟踪对其在线简历的访问:php.net/manual/en/history.php.php。从那里它成长为“其他”的东西。
    • @jnylen 这似乎是一个非常糟糕的答案。自 2012 年以来,PHP 中就提供了多线程。请查看 PthreadsPHP App Server 也是用 pthreads 构建的。
    • @jnylen 我认为你可以改进你的答案。通过Pthreads 可以在PHP 中使用多线程。请检查一下。
    • 自 2012 年以来我学到了很多东西。我仍然不会尝试使用多线程 PHP。
    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多