常州网站开发培训,广州有哪些建筑公司,wordpress插件删除失败,张家港做网站公司一、背景与介绍 PHP语言开发效率高#xff0c;特别应用于适合中小型项目#xff0c;对于创业初期敏捷开发验证项目可行性或者Demo演示绝对占据优势。 但是随着现在Web应用的复杂性#xff0c;针对项目要适应高并发、高流量的访问特性#xff0c;PHP确实在性能方面相对Go、J…一、背景与介绍 PHP语言开发效率高特别应用于适合中小型项目对于创业初期敏捷开发验证项目可行性或者Demo演示绝对占据优势。 但是随着现在Web应用的复杂性针对项目要适应高并发、高流量的访问特性PHP确实在性能方面相对Go、Java存在一定的差距。 那真的这种情况我们如何应对呢? 1、旧的PHP项目要全部推翻重构? 例如使用Go、Java重写这个投入的开发成本和测试成本太高老板基本上都不会采用这个方案的除非他脑子有问题。 旧的项目至少还能跑你这个上来就大刀阔斧搞革命那真的要凉了。 所以这种方案是老板或者大领导下令决心重改否则想都不要想。 2、旧项目找出存在性能瓶颈的接口针对这些接口做优化或者某些模块拆分微服务。 这种方案我觉得至少比第一种方案可行。 因为根据二八定律 百分之八十的访问流量决定在百分之二十的接口里面所以要进行服务拆分或者重构开发和测试的工作量要小N倍 。例如拆分出来的微服务可以使用Go进行实现 但是还是存在一定的开发工作量,队员要学习心得语言、学习新技术 3、直接找到一种方案能够直接应用在当前项目同时相对第二种方案的工作量更少。继续使用PHP开发减少额外技术学习时间成本 这个就是今天要讨论的主题。 其实也存在一些方案能针对PHP项目提速改造工作量相对较少同时能提高性能。 例如接下来介绍的Laravel Octane、Swoole以及(衍生框架Hyperf、EasySwoole)、RoadRunner、FrankenPHP 二、提速方案
1、Laravel Octane Laravel Octane通过使用高性能的应用程序服务器包括FrankenPHP、Open Swoole、Swoole和RoadRunner为您的应用程序提供服务从而提高应用程序的性能。Octane引导您的应用程序一次将其保存在内存中然后以超音速向其提供请求。 官网: https://laravel.com/docs/11.x/octane#introduction 语言要求: PHP8.1 以上、Laravel10 如果你正在使用的Laravel框架, 通过Laravel Octane的部署方式替换以往的NginxPHP-FPM方式应该是比较方便的。 虽然说有版本限制但是终归官方确实有这种提高性能的方式支持可以一试. Laravel Octane只是做了部署整合底层还是使用的其它的引擎加速 例如目前支持Swoole、RoadRunner、FrankenPHP的相关适配
2、Swoole以及衍生框架Hyperf、EasySwoole等 大名鼎鼎的Swoole就无需我都说了吧韩天峰老师主导的开源项目使用过PHP的基本上都有所耳闻。 使用Swoole或者衍生框架如Hyperf、EasySwoole等对PHP项目进行改造 这样也是可以的应该大部分的PHP代码逻辑是无需改动的只需要改动部分代码方式符合Swoole规范即可
3、RoadRunner 官网文档: https://roadrunner.dev/ github地址: https://github.com/roadrunner-server/roadrunner RoadRunner是一款开源MIT高性能PHP应用服务器使用Go编写并提供插件的进程管理器. 它支持作为服务运行并能够使用插件在每个项目的基础上扩展其功能。 说白了这个RoadRunner是Go编写的新版PHP-FPM 可以针对PHP进程进行常驻运行从而提高性能 4、FrankenPHP 官方文档: FrankenPHP: the modern PHP app server github地址: https://github.com/dunglas/frankenphp FrankenPHP是一个现代的PHP应用服务器构建在Caddy web服务器之上。 FrankenPHP凭借其惊人的功能为您的PHP应用程序提供了超能力早期提示、工作模式、实时功能、自动HTTPS、HTTP/2和HTTP/3支持… FrankenPHP可与任何PHP应用程序配合使用并使您的Laravel和Symfony项目比以往任何时候都更快这要归功于它们与工作模式的官方集成。 FrankenPHP也可以作为一个独立的Go库使用net/http将PHP嵌入任何应用程序中。 FrankenPHP也是Go语言编写、基于Caddy构建的PHP应用服务器。本质上还是通过Go的协程能力来管理PHP常驻进程减少PHP进程针对框架每次都要重复加载提高性能
三、总结 上述的这几种提高PHP运行性能方案可以斟酌进行选择找到属于自己项目合适的提速方案。无论任何的提速方案都会有一些开发和适配的工作量只是看工作量大小和可控性这个任何一种改造方案都无法避免的。 如果要大刀阔斧进行项目重构使用Go进行重构是一个不错的方案。 因为Go和云原生K8S、Docker容器化关系相对紧密 占用资源小、跨平台性也OK、开发效率也高。相对Java占用资源确实很大JVM动不动就是1G起步是标配 Go用到500M都算大应用了 不过这个看团队选择没有绝对的最优解。 未来云原生肯定是潮流和趋势体验过容器化的遍历再让你回到物理机的部署方式十分难受。 既然是潮流风口为什么不乘早一步到位呢? 雷军说 站在风口一头猪都能被吹起来! 我认为我们做程序的也可以适用这个方法论选择正确的技术方向努力才会让技术能力变现!