zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Swoole 入门学习(二)

学习入门 Swoole
2023-09-11 14:22:41 时间

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 \n";
    });

    //单次执行定时器
    swoole_timer_after(3000,function(){
        echo "3秒后执行 \n";
    });
?>

异步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\n";
    });
    //处理异步任务
    $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 \n");    
    });
    //注册数据接收$cli,服务端信息$data数据
    $client->on('receive',function($cli,$data){
        echo "data:$data \n");    
    });
    //注册连接失败
    $client->on('error',function($cli){
        echo "失败 \n");    
    });
    //注册关闭函数
    $client->on('close',function($cli){
        echo "关闭 \n");    
    });    
    //发起连接
    $client->connect('192.168.1.5',8080,10);
    
?>

swoole 之进程

  

<?php
    
    //进程对应的执行函数
    function doProcess(swoole_process $worker){
        echo "PID",$worker->pid,"\n";
        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();

?>