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