同步编程与异步编程的区别
在讨论异步 PHP 的优点之前,让我们快速回顾一下同步编程模型和异步编程模型之间的区别。同步代码是逐行顺序执行的。必须先完成前面的任务,然后才能开始另一个任务。在异步代码中,可以同时完成多个任务,这可以大大提高应用程序性能和用户体验。
什么是同步 PHP?
同步 PHP 是指使用同步模型编写的 PHP 代码。PHP 最初是为了支持同步开发而创建的,因此大多数 PHP 开发人员习惯于使用该语言编写同步代码。使用 Apache 的 mod_php 或使用 Apache 或 Nginx 的 php-fpm 进行 Prefork。
你在寻找 PHP 的基础教程吗?查看此 blog, PHP 开发基础:什么是 PHP,为什么如此流行,以及 PHP 的优点是什么?。
什么是异步 PHP?
异步 PHP 是指使用异步模型编写的 PHP 代码。通过使用诸如 Swoole 之类的扩展,或诸如 ReactPHP 之类的 PHP 框架,您可以使 PHP 使用事件循环异步地接受请求和响应。
同步和异步 PHP 编程的主要区别是什么呢?
在许多应用程序中,CPU 在 I / O 任务期间处于空闲状态的时间很多。异步 PHP 思路是通过使非阻塞 I / O 任务在后台运行,在 CPU 等待完成 I / O 所需的数据和指令时处理其他任务,充分利用所有可用的 CPU 周期来执行其他任务。 同步 PHP,CPU 将仅处理 I / O 任务。当前任务完成后,继续处理队列中的下一个任务。
与同步 PHP 编写的应用程序相比,使用异步 PHP 可以实现闪电般的性能.。在一些基准测试中, 相较于在同步代码中使用类似 php-fpm 的进程加速器,使用 Swoole 启用异步 PHP 可以将吞吐量提升 100 倍。这就是为什么 php-fpm 不支持使用类似 Websockets 协议进行异步实时通信的原因。
你应该使用哪一个 PHP?
与大多数有关运行、web 服务器和一般的编程问题一样,不同的案例会决定是使用同步 PHP 还是异步 PHP。要使用异步 PHP,你的代码必须支持它。PHP 开发人员习惯使用的大多数的扩展都会阻塞进程的调用(也称为 I/O 阻塞),这使得异步模型不可实现。
例如,要利用 Swoole,当遇到一个 I/O 请求调用时,它需要将该调用发送到后台,然后继续执行下一条指令。当 I/O 调用返回数据时,Swoole 需要将控制权归还给已经发送到后台的 I/O 调用,以便它可以控制请求数据给进程。重写你的代码去支持异步进程可能需要一些重构才能工作。但是,将来你节省下来的时间可能是值得的。
开始异步 PHP 项目
由于你编写的代码方式要支持异步进程,你必须利用一个可以这么做的项目。这里有我们的前三项建议:
Swoole – 协同 PHP 异步编程框架。
Reactphp – PHP 的事件驱动、非阻塞 I/O。
Amphp – PHP 非阻塞并发框架。
更多学习内容请访问:
怎么从一名码农成为架构师的必看知识点:目录大全(不定期更新)zhuanlan.zhihu.com
以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要的可以加入我的官方群点击此处。