• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP swoole和redis异步任务实现方法分析

    本文实例讲述了PHP swoole和redis异步任务实现方法。分享给大家供大家参考,具体如下:

    redis异步任务

    interface.php

    ?php
    for($i=0;$i100;$i++){
      $msg = "zhezhao[".$i."]";
      $redis = new Redis();
      $redis->connect("127.0.0.1");
      $redis->publish("test",$msg);
      $redis->close();
    }
    
    

    handler.php

    ?php
    $redis = new Redis();
    $redis->connect("127.0.0.1");
    $redis->subscribe(array("test"), 'handleFun');
    function handleFun($redis, $chan, $data) {
      write($data);
    }
    function write($data){
      $path = "/tmp/mailList-redis.log";
      $str = "[".date("Y-m-d H:i:s")."]".$data;
      $str .= PHP_EOL;
      file_put_contents($path,$str,FILE_APPEND);
    }
    
    

    swoole异步任务

    interface.php

    ?php
    for($i=0;$i100;$i++){
      $msg = "zhezhao[".$i."]";
      $client = new swoole_client(SWOOLE_SOCK_TCP);
      $client->connect('127.0.0.1', 9501, 0.5);
      $client->send($msg);
      $client->close();
    }
    
    

    handler.php

    ?php
    $serv = new swoole_server("127.0.0.1", 9501);
    $serv->set(array('task_worker_num' => 4));
    $serv->on('receive', function($serv, $fd, $from_id, $data) {
      $task_id = $serv->task($data);
    });
    $serv->on('task', function ($serv, $task_id, $from_id, $data) {
      handle($data);
      $serv->finish($data);
    });
    $serv->start();
    function handle($data){
      sleep(2);
      mailLog("Send Mail successfully to $data");
    }
    function mailLog($str){
      $path = "/tmp/mailList.log";
      $str = "[".date("Y-m-d H:i:s")."]".$str;
      $str .= PHP_EOL;
      file_put_contents($path,$str,FILE_APPEND);
    }
    
    

    比较

    redis异步任务日志

    swoole异步任务日志

    通过对比任务日志我们可以看到,由于swoole开了4个进程执行异步任务,所以处理异步任务的效率大概是redis的四倍,如果swoole只开一个进程的话,效率和redis几乎没有什么差别。

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • PHP swoole中使用task进程异步的处理耗时任务应用案例分析
    • PHP Swoole异步读取、写入文件操作示例
    • PHP Swoole异步Redis客户端实现方法示例
    • PHP Swoole异步MySQL客户端实现方法示例
    • php基于 swoole 实现的异步处理任务功能示例
    • PHP扩展Swoole实现实时异步任务队列示例
    • Swoole实现异步投递task任务案例详解
    • 详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
    • php异步多线程swoole用法实例
    • 如何用RabbitMQ和Swoole实现一个异步任务系统
    上一篇:php使用pecl方式安装扩展操作示例
    下一篇:PHP基于swoole多进程操作示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP swoole和redis异步任务实现方法分析 PHP,swoole,和,redis,异步,任务,