🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
首先代码逻辑常驻内存代码默认没有热更新你定义了新的类和函数必须重启服务才能生效服务会出现中断的问题(表现为长连接会断开) 现在基于 Swoole得cli 框架,已经很多了,如果作为一个 PHPer 不知道几个 CLI 的 web 框架,可能已经不能算是一个合格的 PHPer 了。毕竟 PHP 的重点在传统的 Web 端,然而 PHP8 带的 JIT,主要却是增强 CLI 模式。 还有就是需要自己实现一套进程管理机制保证服务进程因为代码出错退出后自动重启一个新的进程比如说PHP语法错误就会导致CLI进程直接退出却不会导致FPM进程退出, 再一点实现一套多进程架构来利用CPU多核PHP里你需要用到的pcntl和posix这两个跟进程编程相关的扩展库。fpm 的优点是设计简单,采用多进程 master-worker 模式,没有线程协程之类的复杂问题, CLI 提供了另一种可能,就是提供了 PHP 应用充当后端应用的可能性,首要的是 PHP-CLI 支持多线程。但目前的 PHP-CLI 还是比较糙的,后端应用模式越来越成为人们关注点,比如 Go 的 Web 应用模式,相信 PHP 在此块会有所增强。 其实简单来说的话,就是cli无非就是自己监听端口,干了Nginx的活。然而这样做可能hello world比别人多一点性能,一上数据库就凉凉。易于扩展,简单粗暴,而且每个 php-fpm 进程的生命周期有限, 不用考虑大大减少了因资源泄露产生的问题。还有什么热更新、平滑重启,估计很多 PHP 程序员都没听说过。相较于快速的业务开发非常有利。 但是并发要求高用golang去实现,实在嫌麻烦就用node,因为js/ts本身就是前端必会的,而很多phper一般都会点前端,学习起来很好上手,node有两个个框架,fastify和nestjs,小型项目用fastify大型用nestjs,加上ts和成熟的微服务方案加成,非常好用。