关于swoole:Swoole-的异步-Task-任务详解

47次阅读

共计 745 个字符,预计需要花费 2 分钟才能阅读完成。

本文将从上面两方面讲述 Swoole Task 工作:

1. 如何在 Swoole 中实现异步 Task 工作?

2.Swoole 的异步 Task 工作在 CRMEB 电商零碎中的应用场景有哪些?

一、如何在 Swoole 中实现异步 Task 工作?

如果一些耗时的操作要在服务器端程序中执行 (例如,在 Web 服务器中发送电子邮件和短消息等。),如果间接按程序执行这些操作,程序会阻塞以后过程,导致服务器响应迟缓。通常的做法是应用异步脚本或音讯队列来实现这些操作。如何通过 Swoole 实现异步工作解决?

Swoole 提供了异步解决的性能,能够将一个异步工作公布到 TaskWorker 过程池中执行,而不影响以后申请的处理速度。

新建文件,命名为 task_server.php,代码如下:

在命令行执行如下命令即可运行程序:

php task_server.php

下面的代码创立了一个 TCP 服务,同时设置了四个 taskWorker 过程,实现了两个事件回调函数 onTask 和 onfinish。当客户端与服务器建设连贯时,客户端发送的音讯将触发下面代码中的 receive 事件。在 receive 事件中,会调用 $serv->task () 函数来执行工作,程序会立刻返回,持续向下执行代码。OnTask 回调函数在 TaskWorker 过程中异步执行。执行后调用 $serv->finish () 函数返回后果 (finish 回调函数是可选事件,能够不设置)。

二、Swoole 的 Task 工作适宜解决一些耗时的操作,如发送邮件、发送短信、推送音讯等。

例如在下面代码中,onReceive 回调事件被触发后,就能够执行 $serv->task () 来执行一个异步工作。

注意事项:

如果要投递工作,须要在配置文件中 task_worker_num 必须要设置,否则会报错

残缺附件点此下载

正文完
 0