Swoole 入門學習(二)

Swoole 入門學習


swoole 之 定時器php

 

  循環觸發:swoole_timer_tick    (和js的setintval相似)服務器

  參數1:int $after_time_ms 指定時間【毫秒】swoole

  參數2:mixed $callback_function 執行的函數異步

       參數3:mixed $user_param 用戶參數函數

   清除定時器:bool swoole_timer_clear(int $timer_id)。學習

 

  單次觸發:swoole_timer_afterspa

  參數1:int $after_time_ms 指定時間【毫秒】code

  參數2:mixed $callback_function 執行的函數server

       參數3:mixed $user_param 用戶參數blog

 

  示例:  

<?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();

?>
相關文章
相關標籤/搜索