我了解到一种名为PHP-PM的工具,可以在PHP中实现异步和进程管理,比PHP-FPM快15倍(不是PHP-fpm哦!)
最近在做一些调查时,我发现了一个叫做 ReactPHP 的奇怪东西。
https://reactphp.org/
这里所说的React并不是指Javascript的React.js。这是一种React模式或者样式的React。(据称,ReactJS最初是基于PHP的HTML组件库XHP开发的。https://qiita.com/ytake/items/2ee2c0e10c6ef6f040fa)
它是用PHP以异步和多进程的方式实现的。令人惊讶的是,它是用PHP编写的。
老实说,我也曾想:“这能用PHP写吗?”但因为觉得很有意思,所以做了一些调查,发现了一个叫PHP-PM的东西。
PPM – PHP 进程管理器
以下是对该链接的本土化中文译文:
这个项目被简称为PPM。它是基于ReactPHP开发的,实现了作为PHP中间件(遵循PSR-15标准),用于运行Symfony和Laravel等框架。它能作为Symfony的HttpKernel适配器运行。因此,nginx将作为PPM的代理运行。
一旦启动,PPM将会一直监听在例如8080端口。它作为子进程使用CLI运行PHP并管理进程。因此,所使用的php.ini文件是用于CLI的配置文件。
因此,為了使用它,需要PCNTL並使用configure選項–enable-pcntl。您可以在https://www.php.net/manual/ja/book.pcntl.php找到更多資訊。
听说Nginx + PHP-fpm可以提高速度达到15倍。
内存泄漏仍然存在
在公式页面上,针对主要问题写着类似于“内存泄漏!内存泄漏!内存泄漏!不过,由于进程将被重新启动,所以应该没问题”的内容,并在引用的文章中也有提到。
PHP-PM可能会造成严重的内存泄漏(重启工作进程可能存在问题);它消耗了我的所有内存,导致我的电脑崩溃;这已经发生过两次。
根据写着”内存泄漏太严重了,导致电脑崩溃了”之类的内容,说明这里需要注意。
总结
我感到诚实地说,「诶!?真的这么快吗?」这种怀疑并没有消除,而且尽管使用PHP进行进程控制,我还是会因为直觉上的恐惧而感到害怕。听说还会因为内存泄漏而导致电脑崩溃,这让我觉得它还有很长的发展路程。
然而,仅凭情感而不进行准确验证是不可行的,因此我计划尽快尝试一些不同的方法。
顺便说一下,在PHP中有一个叫Swoole的非同步处理的工具,它是用C++编写的,并且还成为了PECL模块,所以从感觉上来说它更可靠。