资讯专栏INFORMATION COLUMN

在php-fpm或apache中使用swoole提供的task功能

Developer / 940人阅读

摘要:是提供一套生产者消费者模型,可以方便地将一个慢速任务投递到队列,由进程池异步地执行。功能目前只能在中使用。版本提供了框架,可以基于和实现一个程序,在或中直接调用扩展就可以使用的功能了。

AsyncTask是swoole提供一套生产者消费者模型,可以方便地将一个慢速任务投递到队列,由进程池异步地执行。task功能目前只能在swoole_server中使用。1.9.0版本提供了RedisServer框架,可以基于RedisServer和Task实现一个Server程序,在php-fpm或apache中直接调用Redis扩展就可以使用swoole的task功能了。

创建RedisServer
set(array(
    "task_worker_num" => 32,
    "worker_num" => 1,
));

$server->setHandler("LPUSH", function ($fd, $data) use ($server) {
    $taskId = $server->task($data);
    if ($taskId === false)
    {
        return Server::format(Server::ERROR);
    }
    else
    {
        return Server::format(Server::INT, $taskId);
    }
});

$server->on("Finish", function() {

});

$server->on("Task", function ($serv, $taskId, $workerId, $data) {
    //处理任务
});

$server->start();

如果是本机调用可以监听UnixSocket,局域网内调用需要使用IP:PORT

Task中$data就是客户端投递的数据

其他语言也可以使用Redis客户端投递任务

可以根据Task任务执行的速度调节task_worker_num控制启动的进程数量,这些进程是由swoole底层负责管理的,在发生致命错误或进程退出后底层会重新创建新的任务进程

投递任务
$redis = new Redis;
$redis->connect("127.0.0.1", 9501);
$taskId = $redis->lpush("myqueue", json_encode(array("hello", "swoole")));

注意这个RedisServer并不是一台真正的Redis服务器,它只支持LPUSH一个指令。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22242.html

相关文章

  • Swoft 源码剖析 - Swoole和Swoft那些事 (Http/Rpc服务篇)

    摘要:和服务关系最密切的进程是中的进程组,绝大部分业务处理都在该进程中进行。随后触发一个事件各组件通过该事件进行配置文件加载路由注册。事件每个请求到来时仅仅会触发事件。服务器生命周期和服务基本一致,详情参考源码剖析功能实现 作者:bromine链接:https://www.jianshu.com/p/4c0...來源:简书著作权归作者所有,本文已获得作者授权转载,并对原文进行了重新的排版。S...

    张汉庆 评论0 收藏0
  • 了解swoole运行模式,加速laravel应用

    摘要:负责解释执行文件生成响应,最终返回给,展现至前端。相比于传统架构,进程模型最大的特点在于其多线程模式处理网络请求,使得其能轻松应对大量连接。这要求开发人员对于多进程的运行模式有更清晰的认识更容易内存泄露。 一、SwooleSwoole号称重新定义了PHP,它是一个PHP扩展,使得PHP可以使用异步的方式执行,就像node一样,而且还能使用socket,为PHP提供了一系列异步IO、事件...

    时飞 评论0 收藏0
  • 为什么Swoole可以加速php

    摘要:前言最近在研究,原来一直听别人在说可以加速,一直都是懵逼的。,全称,中文译作快速公共网管接口。那么,我们为什么不能像之前一样,能够不重新加载配置文件的,来一个不用加载这么多的依赖的方式呢当然可以啦,这时候就派上用场了。 前言 最近在研究Swoole,原来一直听别人在说Swoole可以加速,一直都是懵逼的。在研究了Swoole之后,我有了一些自己的理解。 PHP-CGI 的黑历史 对于 ...

    y1chuan 评论0 收藏0
  • 为什么Swoole可以加速php

    摘要:前言最近在研究,原来一直听别人在说可以加速,一直都是懵逼的。,全称,中文译作快速公共网管接口。那么,我们为什么不能像之前一样,能够不重新加载配置文件的,来一个不用加载这么多的依赖的方式呢当然可以啦,这时候就派上用场了。 前言 最近在研究Swoole,原来一直听别人在说Swoole可以加速,一直都是懵逼的。在研究了Swoole之后,我有了一些自己的理解。 PHP-CGI 的黑历史 对于 ...

    bergwhite 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<