• php swoole异步处理mysql


    php swoole异步处理mysql

    <pre>
    //创建websocket服务器对象,监听0.0.0.0:9509端口
    //异步测试
    $ws = new swoole_websocket_server("0.0.0.0", 9600);

    $ws->set(array(
    'worker_num' => 1,
    'max_conn' => 65535,
    /*'daemonize' => true,*/
    'backlog' => 128,
    'task_worker_num' => 1,
    ));

    //监听WebSocket连接打开事件
    $ws->on('open', function ($ws, $request) {

    });

    /* $tag 1 初始化玩家信息 */
    //监听WebSocket消息事件
    $ws->on('message', function ($ws, $frame) {

    });

    //定时器要写在WorkerStart这个里面哦
    $ws->on('WorkerStart', function ($serv, $worker_id) {
    //投递异步任务
    $data=array('wef'=>'wefe');

    $task_id = $serv->task($data);
    echo "Dispath AsyncTask: id=$task_id ";

    /*执行其他操作*/
    echo'lalalalalalal';
    });

    /*通用的执行*/
    function commonexecute($sql, $zhanwei = '', $isdebug = 0)
    {
    try {
    $stmt = Db::getStmt($sql);
    if (empty($zhanwei)) {
    $isok=$stmt->execute();
    } else {
    $isok=$stmt->execute($zhanwei);
    }
    if ($isdebug) {
    getrepairsql($sql, $zhanwei);
    }
    } catch (PDOException $e) {
    $errorstr1='mysql语句错误1:'.$e->getMessage().PHP_EOL;
    $errorstr2='mysql语句错误2:'.$sql.PHP_EOL;
    echo $errorstr1;
    echo'</br>';
    echo $errorstr2;
    file_put_contents(__DIR__.'/error.log', date("Y-m-d H:i:s"). " " . $errorstr1.PHP_EOL, FILE_APPEND | LOCK_EX);
    file_put_contents(__DIR__.'/error.log', date("Y-m-d H:i:s"). " " . $errorstr2.PHP_EOL, FILE_APPEND | LOCK_EX);
    exit();
    }
    return $isok;
    }
    //处理异步任务
    $ws->on('task', function ($serv, $task_id, $from_id, $data) {

    echo "New AsyncTask[id=$task_id]".PHP_EOL;
    var_dump($data);
    $sql='select SLEEP(6)';
    $isok=commonexecute($sql);
    //返回任务执行的结果
    $serv->finish("$data -> OK");

    });
    //处理异步任务的结果
    $ws->on('finish', function ($serv, $task_id, $data) {
    echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
    });


    //监听WebSocket连接关闭事件
    $ws->on('close', function ($ws, $fd) {
    });


    $ws->start();
    </pre>

    可以看出了执行sleep sql语句时候并有堵塞线程

  • 相关阅读:
    成立仅8个月的个人网站,月收入几十万美金
    Dynamics AX Bitmap to Image File
    孤儿药与长尾商品的网络营销
    How to control printer orientation(Landscape / Portrait) for an AX report in X++
    长城坑爹宽带,劫持用户DNS赚取购物返利
    2014年最大福利:185个Google排名因素!免费电子书下载
    火狐用户评价
    冲刺5
    《构建之法》阅读笔记03
    冲刺4
  • 原文地址:https://www.cnblogs.com/newmiracle/p/11856389.html
Copyright © 2020-2023  润新知