php框架性能测试PHP编写投递任务实现原理和常见的异步任务处理任务 php框架性能对比
2023-01-18
异步任务
实现原理
我们知道PHP本身就是设计成同步阻塞的,不支持多线程和异步IO,所以当我们进行一些耗时的操作时,比如发送广播或者邮件,如果直接在当前进程中操作小程序开发,服务器响应会改变。 慢,所以需要借助一些第三方服务来处理,实现异步功能php框架性能测试,比如队列。 作为PHP异步网络通信引擎,自然也提供了对异步任务处理的支持。 底层实现原理类似于常见的异步队列:将耗时任务投递到进程池php框架性能测试,然后返回(对应的任务会异步执行,执行成功后可以调用预先注册的回调函数进行后续处理) ,后续业务逻辑会继续执行,不会影响当前请求的处理速度。 后面介绍底层原理的时候会详细介绍。
示例代码
我们可以基于入门教程中写的TCP服务器实现一个异步任务服务器来处理异步任务。 我们只需要添加一个任务处理和一个任务完成回调即可。 此外,我们还需要配置进程数来保证任务的处理。 速度,它的值可以根据任务的耗时和任务量来配置,通常我们可以配置成CPU数量的两倍:
我们将此文件保存为 .php 并从命令行启动服务器:
接下来,启动 TCP 客户端:
服务端下发任务后,会立即向客户端发送处理信息:
服务器然后异步处理任务:
实现一个基于异步任务队列
还是基于扩展包,我们在项目中实现了异步任务队列功能。 原理就是上面说的异步任务,只是扩展包对它进行了封装。
编写任务类
首先我们创建一个挂起的任务类小程序开发,它继承自\\\Task\Task基类:
编写测试代码
然后在/web.php中编写下发异步任务的测试代码如下:
修改配置文件
另外取消配置文件/.php中配置项前面的注释:
测试异步任务执行
接下来我们重启服务器(根据HTTP服务器访问路由成功下发异步任务):
然后在浏览器中访问路由进行测试,页面立即显示投递成功:
然后我们去/logs目录查看最新的日志信息,可以看到任务执行实际耗时3秒:
这样,我们就成功实现了项目中的异步任务消费队列。