执行异步任务 (Task)
在 Server 程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web 服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。
Swoole 提供了异步任务处理的功能,可以投递一个异步任务到 TaskWorker 进程池中执行,不影响当前请求的处理速度。
先上代码,服务端代码使用上一次的websocket的服务端代码
<?php
//优化ws基础类库面向对象优化
class Ws{
CONST HOST = "0.0.0.0";
CONST PORT = 8812;
public $ws = null;
public function __construct()
{
$this->ws = new swoole_websocket_server(self::HOST,self::PORT);
$this->ws->set([
'worker_num' => 2,
'task_worker_num' => 2,
]);//这里一定要设置不然服务端报warning,信息如下
/*PHP Warning: Swoole\Server::task(): task method
can't be executed without task worker in
/usr/local/var/www/swoole_mooc/demo/server/ws.php on line 39*/
$this<