Tieme在他的优秀答案中投入了大量精力,但我认为OP问题的核心是这些技术与PHP的关系,而不是每种技术的工作原理 .
除了显而易见的客户端html,css和javascript之外,PHP是Web开发中使用最多的语言 . 然而,PHP在实时应用程序方面有两个主要问题:
1)PHP作为一个非常基本的CGI开始 . 自从它处于早期阶段以来,PHP已经取得了很大进展,但它只是小步骤发生的 . PHP在成为今天的嵌入式和灵活的C库时已经拥有数百万用户,其中大多数用户依赖于它早期的执行模型,所以它尚未在内部试图逃避cgi模型 . 甚至命令行界面也会调用PHP库(linux上的libphp5.so,windows上的php5ts.dll等),好像它仍然是一个处理GET / POST请求的cgi . 它仍然执行代码,好像它只需要构建一个“页面”然后结束它的生命周期 . 因此,它几乎不支持多线程或事件驱动的编程(在PHP用户空间内),这使得它对于实时的多用户应用程序来说当前不实用 .
请注意,PHP确实具有在PHP用户空间中提供事件循环(例如libevent)和线程(例如pthreads)的扩展,但非常非常少的应用程序使用这些 .
2)PHP仍然存在垃圾收集的重大问题 . 虽然这些问题一直在不断改进(可能是结束生命周期的最大步骤,如上所述),但即使是创建长期运行的PHP应用程序的最佳尝试也需要定期重新启动 . 这也使得它对于实时应用程序来说不实用 .
PHP 7将是解决这些问题的重要一步,并且作为实时应用程序的平台似乎非常有前途 .