为高负载而生的 PHP 进程管理器 —— PHP-PM (PPM)
PHP-PM 可以用于php应用程序的进程管理,增压和负载均衡.它使用 ReactPHP 实现php的事件驱动和非阻塞I/O。
它是基于 ReactPHP,最好是工作在基于请求-响应式的框架,像Symfony的HTTPKernel。这样做是为了减少php启动(包括变量声明,加载和解析文件)的时间,减少功能强大的框架的启动时间。想一睹为快就看看性能一节。 PHP-PM启动了一些PHP进程,引导你的应用程序 像Symfony内核) ,把它加载到内存为请求做准备。这就是为什么PHP-PM使你的应用程序快的原因。
在高层次上,PPM的主要特征是:
- 性能提升达15倍(相对于PHP-FPM,symfony应用)。
- 集成负载平衡
- 热代码重新加载(更改PHP文件时)
- 为易于开发的程序提供的静态文件
- 支持HttpKernel(symfony / laravel),Drupal(experimental),Zend(experimental)
在撰写本文时,PHP-PM还没有处于黄金时段,但是这种技术是一种非常有趣的方法,它可以在服务于高性能的PHP程序的典型框架之外进行运作。 作者正在研究这个问题,并尝试将PHP中的非阻塞进程效能推到极限。 在我看来,PHP将会更像Java和Node等其他选项,并且像PHP-PM这样的项目似乎是一个很好的解决更高I/O所需性能的方法。 我期待看到像PPM和ReactPHP这样的项目采取PHP。
PHP从5+到7的性能提升了很多,在我看来,未来我们会更加关注它的性能,包括即将发布的PHP版本和那些使用PHP的开源项目。
了解更多
请自行查看 PHP-PM GitHub 库 ,在 README
中了解更多关于怎样运行 PHP-PM 等。
项目的主要贡献者之一, Marc J. Schmidt ,也写了一篇详细的文章:Bring High Performance Into Your PHP App (with ReactPHP) ,这可以更好地帮助你理解PPM中使用的概念。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
常驻内存:
也有好处,每次省去ZendVM的bootstrap时间,省去composer autoload的bootstrap时间。
还有个叫amphp的项目,比react-php开发更活跃,写一个类似的这样的服务器也很简单,我搞了一个例子,有兴趣的同学可以试试啊 https://github.com/amphp/http-server/issue... 我写了一个简单的例子在 https://gist.github.com/xcaptain/d3184e2d5...
PPM性能只是提高了3倍,从近年来看 后续已经乏力 生态较差 版本较老 坑点较多 比如:
php70-event
,但您可以尝试LibEventLoopphp56-libevent
)而laravel-swoole方案 虽然也有上述缺点,但是出色的性能提升高达30-50倍,支持的版本新 性能更好,如果你的团队能够接受PPM(有很多的时间修复漏洞),那么你肯定也可以接受laravel-swoole。
github.com/swooletw/laravel-swoole
但是 最有前途的是HookPHP
HookPHP基于C扩展搭建内置AI编程的架构系统-支持微服务部署|热插拔业务组件-集成业务模型|权限模型|UI组件库|多模板|多平台|多域名|多终端|多语言-含常驻内存|前后分离|API平台|LUA QQ群:679116380
www.php.net/manual/zh/book.paralle...
最近出来的 代替以前不完美的 www.php.net/manual/zh/intro.pthrea...
gitee.com/cart/HookPHP/blob/master...
gitee.com/cart/HookPHP/blob/master...
也有 Dockerfile,开发者可以自己改造
gitee.com/cart/HookPHP/blob/master...
稍微配置 就很快啦~
比如 composer 就可以加入 preload.php 预加载 不需要每次解析
opcache jit preload 都往上怼
C扩展往上怼
常驻内存、主从分离、弹性伸缩 都往上怼~
做到这些 PHP还慢么?
my.oschina.net/cart/blog/2986804
github.com/letwang/HookPHP