zoukankan      html  css  js  c++  java
  • Swoole 中使用异步任务

    执行异步任务 (Task)

    # server.php
    
    $serv = new SwooleServer("127.0.0.1", 9501); 
    
    // 设置异步任务的工作进程数量
    $serv->set(array('task_worker_num' => 4));
    
    $serv->on('Connect', function ($serv, $fd) {
        echo "Client: Connect.
    ";
    });
    
    // 此回调函数在worker进程中执行
    $serv->on('Receive', function ($serv, $fd, $from_id, $data) {
        $serv->send($fd, "Server: ".$data);
        // 向 task_worker 进程投递异步任务,程序继续向下执行代码
        $task_id = $serv->task($data);
        echo "Dispatch AsyncTask: id=$task_id
    ";
    });
    
    $serv->on('Close', function ($serv, $fd) {
        echo "Client: Close.
    ";
    });
    
    // 处理异步任务(此回调函数在task进程中执行)
    // 会将当前进程状态切换为忙碌,不再接收任务;执行完成后切换为空闲,继续接收任务
    $serv->on('Task', function ($serv, $task_id, $from_id, $data) {
        echo "New AsyncTask[id=$task_id]".PHP_EOL;
        // 返回任务执行的结果
        $serv->finish("$data -> OK");
    });
    
    // 处理异步任务的结果(此回调函数在worker进程中执行)
    $serv->on('Finish', function ($serv, $task_id, $data) {
        echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
    });
    
    $serv->start();
    
  • 相关阅读:
    第七周作业
    第六周作业
    第六周上机练习
    jsp第七周
    Android数据跳转
    第九周上机练习
    第七周上机作业
    IE7 正式发布版不支持offsetheight,clientheight,scrollheight属性
    Build your own UpdateProgress panel
    Treeview控件如何在asp.net ajax中使用小技巧
  • 原文地址:https://www.cnblogs.com/danhuang/p/13219800.html
Copyright © 2011-2022 走看看