zoukankan      html  css  js  c++  java
  • Swoole 入门学习(二)

    Swoole 入门学习


    swoole 之 定时器

      循环触发:swoole_timer_tick    (和js的setintval类似)

      参数1:int $after_time_ms 指定时间【毫秒】

      参数2:mixed $callback_function 执行的函数

           参数3:mixed $user_param 用户参数

       清除定时器:bool swoole_timer_clear(int $timer_id)。

      单次触发:swoole_timer_after

      参数1:int $after_time_ms 指定时间【毫秒】

      参数2:mixed $callback_function 执行的函数

           参数3:mixed $user_param 用户参数

      示例:  

    <?php 
        //循环执行定时器
        swoole_timer_tick(2000,function($timer_id){
            echo "执行 $timer_id 
    ";
        });
    
        //单次执行定时器
        swoole_timer_after(3000,function(){
            echo "3秒后执行 
    ";
        });
    ?>

    异步TCP服务器

      函数:

        task() 投递异步任务

        on('事件',function(){}) 处理函数,执行异步函数

        finish(),任务处理完成后结果

      示例:

      

    <?php 
        //创建TCP服务器
        $serv = new swoole_server('0.0.0.0',9501);
        //设置异步进程工作数
        $serv->set(array('task_worker_num'=>4));
        //投递异步任务
        $serv->on('receive',function($serv,$fd,$from_id,$data){
            $task_id = $serv->task($data);//异步ID
            echo "异步ID:$task_id
    ";
        });
        //处理异步任务
        $serv->on('task',function($serv,$task_id,$from_id,$data){
            echo "执行异步ID:$task_id";
        });
        //处理结果
        $serv->on('finish',function($serv,$task_id,$data){
            echo '执行完成';
        });
    
        $serv->start();
    
    ?>

    TCP客户端 

    <?php
        //实例化客户端
        $client = new swoole_client(SWOOLE_SOCK_TCP);
        //连接服务
        $client->connect('192.168.1.5',8080,5) or die('连接失败');//5表示5秒内给到返回数据。
        //发送数据
        $client->send('hello world') or die('发送失败');
        //从服务器接收数据
        $data = $client->recv();
        if($data){
            var_dump($data);
        }
        //关闭客户端
        $client->close();
    ?>

    TCP异步客户端

      示例:

    <?php
        //创建异步TCP客户端
        $client = new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC);
        //注册连接成功的回调
        $client->on('connect',function($cli){
            $cli->send("hello 
    ");    
        });
        //注册数据接收$cli,服务端信息$data数据
        $client->on('receive',function($cli,$data){
            echo "data:$data 
    ");    
        });
        //注册连接失败
        $client->on('error',function($cli){
            echo "失败 
    ");    
        });
        //注册关闭函数
        $client->on('close',function($cli){
            echo "关闭 
    ");    
        });    
        //发起连接
        $client->connect('192.168.1.5',8080,10);
        
    ?>

    swoole 之进程

      

    <?php
        
        //进程对应的执行函数
        function doProcess(swoole_process $worker){
            echo "PID",$worker->pid,"
    ";
            sleep(10);
        }
    
        //创建进程1
        $process = new swoole_process("doProcess");
        $pid = $process->start();
    
        //创建进程2
        $process = new swoole_process("doProcess");
        $pid = $process->start();
    
        //创建进程3
        $process = new swoole_process("doProcess");
        $pid = $process->start();
    
        //等待结束
        swoole_process::wait();
    
    ?>

      

      

  • 相关阅读:
    js-url打开方式
    eclipse删除所有空行
    Oracle重启 error: ora-01034:oracle not available ora-27101:shared memory realm does not exist
    最近面试遇到了高阶函数的概念混乱了
    关于跨域的cookie问题
    二叉树 呜呜
    函数的尾递归
    react context
    二叉树
    dom3级事件
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9361452.html
Copyright © 2011-2022 走看看