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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php基于 swoole 实现的异步处理任务功能示例

    本文实例讲述了php基于 swoole 实现的异步处理任务功能。分享给大家供大家参考,具体如下:

    安装swoole:

    下载官方swoole压缩包,解压进入目录

    $ cd swoole             # 进入 swoole 目录
    $ phpize
    $ ./configure --with-php-config=/usr/local/php/bin/php-config  #注意查看服务器上是否有这个路径
    $ make  make install
    
    

    修改php.in文件

    vi /usr/local/php/lib/php.ini
    
    

    增加如下内容

    extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/swoole.so" //版本不同路径可能不同
    
    

    保存后重启php-fpm

    $ /etc/init.d/php-fpm restart
    
    

    php -m 命令查看是否添加成功 成功则会看到有swoole模块

    $ php -m
    
    

    服务端作为守护进程监控任务,新建server.php:

    ?php
    $serv = new Swoole\Server("127.0.0.1", 9502);
    $serv->set(array('task_worker_num' => 4));
    $serv->on('Receive', function($serv, $fd, $from_id, $data) {
      $task_id = $serv->task("Async");
      echo "Dispath AsyncTask: id=$task_id\n";
    });
    $serv->on('Task', function ($serv, $task_id, $from_id, $data) {
      echo "New AsyncTask[id=$task_id]".PHP_EOL;
      $serv->finish("$data -> OK");
    });
    $serv->on('Finish', function ($serv, $task_id, $data) {
      echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
    }); 
    $serv->start();
    
    

    用命令行模式打开

    php server.php
    
    

    新建一个client.php

    ?php
    $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC);
    $client->on("connect", function(swoole_client $cli) {
      $cli->send("GET / HTTP/1.1\r\n\r\n");
    });
    $client->on("receive", function(swoole_client $cli, $data){
      echo "Receive: $data";
      $cli->send(str_repeat('A', 100)."\n");
      sleep(1);
    });
    $client->on("error", function(swoole_client $cli){
      echo "error\n";
    });
    $client->on("close", function(swoole_client $cli){
      echo "Connection close\n";
    });
    $client->connect('127.0.0.1', 9502);
    
    

    打开一个新的窗口命令行执行

    php client.php
    

    执行完后会发现在server.php的窗口就会有信息输出

    更多关于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和redis异步任务实现方法分析
    • PHP扩展Swoole实现实时异步任务队列示例
    • Swoole实现异步投递task任务案例详解
    • 详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
    • php异步多线程swoole用法实例
    • 如何用RabbitMQ和Swoole实现一个异步任务系统
    上一篇:thinkphp3.2框架中where条件查询用法总结
    下一篇:php中的依赖注入实例详解
  • 相关文章
  • 

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

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

    php基于 swoole 实现的异步处理任务功能示例 php,基于,swoole,实现,的,异步,