众所周知,PHP在“无分享”的哲学中起作用。 因此,它受到严重的性能限制。
虽然某些缓存扩展可以加速编译脚本,但我们无法避免非常繁重的初始化(例如,我们有一个Web服务,每次调用至少需要解析和引导DTO模式,设置数据绑定,连接数据库(从那个角度来看,持久的mysql连接真的很脏),打开另一个远程服务等等。)
此问题似乎也可以通过ReactPHP框架解决,但是......是否存在任何轻量级的非框架解决方案?从黑客方式,单文件示例到轻量级库(不是框架)的任何东西都被接受了。 无需复杂的Web服务器重新创建的功能。只处理普通的POST请求就足够了。
<offtopic>
任务本身是如此重要,所以我想知道为什么PHP不提供这种开箱即用的...
</offtopic>
答案 0 :(得分:1)
一个很好的方法是使用一个CLI脚本,它就像普通的Java / nodeJS服务器一样。并使用轻量级PHP网关接收HTTP请求,并通过套接字从CLI获取所需信息。
有趣的读物是http://liveforeverbook.info/blog/2008/01/31/persistent-web-apps-in-php/
关键是CLI脚本保留了消息存储 内存中(如Java服务),并与客户端通信 通过基于Web的PHP“网关”。
IRC服务器&lt; - &gt; PHP网关&lt; - &gt;客户端网关步骤不是 实际需要,但有助于过滤掉可能来的垃圾 如果IRC服务器直接连接到网络。
启动从控制台作为脚本运行的IRC服务器(php server.php),让它继续运行。 CLI脚本没有超时,所以它 将继续运行,直到您手动将其关闭。
答案 1 :(得分:1)
是否存在任何轻量级的非框架解决方案?从黑客方式,单文件示例到轻量级库(不是框架)的任何东西都可以接受。
取决于您正在寻找的内容。您将需要某种事件循环/调度程序,这主要是amphp/amp
/ react/event-loop
提供的。如果你不想在回调地狱中死去,你需要某种形式的承诺实施,由amphp/amp
/ react/promise
提供。
如果您将这些部分视为框架并且不想使用这些部分,您当然可以自己编写。但是,您再次寻找稳定的软件,其中任何一个都比您自己的实施更稳定,因为它们的使用范围更广,报告和修复了错误。
除了这些基础之外的任何东西都只是库。您可以使用它们或编写自己的。如果您碰巧只需要一个套接字服务器,为什么不使用已经处理PHP边缘情况的库呢?
不需要复杂的Web服务器重新创建的功能。只处理普通的POST请求就足够了。
哦,什么是复杂的网络服务器? &#34;只是&#34;处理普通的POST请求?您需要一个HTTP协议解析器,它可以正确处理流水线请求,解码分块编码,如果您想处理上传文件,则需要多部分解析器等。
如果您只是想在单个PHP流程中处理多个请求而不重复引导,我建议您查看PHP-PM,但此时它并非如此准备就绪。