PHP如何实现多进程?有哪些可靠的解决方案?

PHP多进程的概念最近很流行,因为很多框架和项目都是基于CLI运行的。事实上,对于 PHP-FPM,PHP 始终运行在多个进程中。任何 PHP 代码,只要使用创建网页的传统方法运行,都是多线程的。但我们显然对此不感兴趣。
其他编程语言是如何工作的
最近,似乎有很多语言可以用来开发Web后端。它们的大多数执行方法都是基于在命令行上运行并侦听 TCP 端口的类库和框架。 ,处理基本的http请求,然后进入框架,分发到各个业务代码。正是这些语言支持docker和serverless开发。毕竟它们运维起来确实比较麻烦,还要处理监控、重启、连接等事情。 PHP-FPM 中不存在这些。在 PHP 中,只需更新代码即可。
这些框架很多且非常流行,例如:
Java Web 框架:
1。 Spring框架:一个非常流行的基于Java的Web应用程序框架,它提供了强大的IoC容器和AOP框架以及一系列集成的API来简化Web应用程序的开发过程。
2。 Struts:最早提供全面控制层、验证和数据绑定解决方案的 MVC 框架之一。
3。 Hibernate:一种非常流行的 ORM 框架,提供对象关系映射、HQL 查询、事务处理和其他功能。
4。 Play Framework:基于Java和Scala的轻量级、高效的Web框架,提供优秀的基础设施和强大的开发工具。
转到 Web 框架:
1。 Gin:基于Go语言的高性能Web框架,非常适合构建RESTful API和微服务。
2。 Beego:一个基于 Go 语言的 MVC 风格的 Web 框架,提供了许多有用的功能和工具,例如 ORM、会话管理和国际化支持。
3。 Echo:一个灵活、高性能的基于 Go 的 Web 框架,支持中间件、路由、模板、静态文件服务等。
Python Web 框架:
1。 Django:一个非常流行的全栈 Web 框架,提供 ORM、模板引擎、路由系统和其他用于构建 Web 应用程序的强大功能。
2。 Flask:一个基于Python的轻量级Web框架。它提供了简单易用的API来快速构建Web应用程序。
3。 Pyramid:一个灵活的Web框架,基于Python语言,支持多种显示样式和数据库访问方式,并提供可扩展的插件机制。
Node.js Web 框架:
1。 Express:基于 Node.js 的 MVC 框架,提供路由、中间件、模板、静态文件服务等常用功能,可以高效构建 Web 应用程序。
2。 Koa:一个基于 Node.js 的轻量级、灵活的 Web 框架,提供异步中间件、错误处理、请求响应代理等功能,非常适合构建高性能 Web 应用程序。
3。 Nest.js:一个全新的基于TypeScript的Node.js框架,提供模块化、DI、MVC结构、WebSockets等,并支持多种开发风格。
“高性能框架”相对于PHP-FPM的优势
PHP-FPM本身功能强大,PHP对docker、ftp等技术的需求很少就足够了。然而PHP-FPM的性能在设计上也有所欠缺。当许多进程正在运行但CPU核心数保持不变时,这会导致进程来回切换以检查是否空闲或需要处理,从而导致CPU使用率较高。浪费。
所以PHP也有很多“高性能”框架。与其他语言的框架一样,可以充分利用Linux的高性能特性,利用多线程、协程、EventLoop等实现高性能的业务开发。
如何在PHP中实现多进程?
其实主要有两种方法:
1。使用 pcntl 扩展实现可编程流程创建和管理
2。使用exec之类的函数让操作系统再次执行命令
第一种方法这个还是比较正统可靠的方法。健全的制度甚至无法管理流程,无法自圆其说。网上也有一些资料。
但其实第二种方式也是一个好技巧。我使用 popen 函数编写了这样的代码来执行多个命令并通过命令行参数传递进程数和其他数据。共享是通过缓存实现的。优点是多个进程也可以在 Windows 上实现。
更可靠的PHP多处理解决方案
事实上,PHP已经有了更可靠的多处理解决方案,例如:
1。 Laravel Horizon
2。 Symfony 进程组件
3。 ReactPHP
4。 Swoole框架
5. Amp(异步多进程 PHP 框架)
6.工人
7。 PHP-PM(PHP 进程管理器)
8。 pthreads
9。 Hoa\ Websocket
10。 PHP Forking(基于 Pcntl 模块的多进程框架)
上面包括多进程异步队列的解决方案,例如 Laravel Horizon,以及可以运行异步命令的组件,例如 S Page Process Component,有还有PHP多线程扩展:pthreads等都是可以直接进行网络编程的框架。
总结
目前,PHP 有很多成熟的多处理开源框架。实现多处理既简单又有趣。这使得PHP能够实现可靠的过程式编程,也使得PHP能够进行基本的网络编程,你可以编写DHT蜘蛛、代理服务器、端口防火墙、监视和控制端口流量的程序等。 。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。