2019 5 18 swoole訊息佇列

2021-09-22 22:39:48 字數 1311 閱讀 9814

1跨程序(不需要親緣關係、可不是父子程序)

2跨語言(php和c通訊)

3不是共享記憶體,而是訊息傳遞。資料獲取後消失。

4msg_send、msg_receive(預設阻塞也可不阻塞)

5特點:快。侷限性:單機

6swoole的task程序允許其他程式投遞,c語言或傳統fpm投遞到task。

swoole已經封裝好了介面類。

介面類使用方法:

<?php

$server=new swoole\server("0.0.0.0",9801);

$key=ftok(__dir__,1);

echo $key;

$server->set([

'worker_num'=>1, //設定程序

'task_worker_num'=>1, //task程序數

'task_ipc_mode'=>2,

'message_queue_key'=>$key,

'open_length_check'=>1,

'package_length_type'=>'n',//設定包頭的長度

'package_length_offset'=>0, //包長度從**開始計算

'package_body_offset'=>4, //包體從第幾個位元組開始計算

]);$server->on('start',function (){});

$server->on('workerstart',function ($server,$fd){});

$server->on('connect',function ($server,$fd){});

$server->on('receive',function (swoole_server $server, int $fd, int $reactor_id, string $data));

$server->on('task',function ($server,$task_id,$form_id,$data)".php_eol;

$server->finish("執行完畢");

});$server->on('finish',function ($server,$task_id,$data){});

$server->on('close',function (){});

$server->start();

執行server,第4行**列印出key,將key複製貼上到介面類的

$task = new swooletask(這裡, 1);,執行介面類,即投遞到server的task。

swoole訊息推送

socket.php 注釋的部分是學習的筆記 建立websocket伺服器物件,監聽0.0.0.0 9502埠 ws new swoole websocket server 0.0.0.0 9501 監聽websocket連線開啟事件 客戶端想伺服器傳送資訊是呼叫函式 ws websocket 伺服...

swoole 訊息佇列

場景 監控訂單表狀態 佇列通訊 乙個程序向佇列發布訊息 另外兩個程序爭搶 設定主程序名 echo 主程序id posix getpid php eol cli set process title php main 1 此子程序用於監聽資料的改變 process1 new swoole process...

swoole訊息推送

socket.php 注釋的部分是學習的筆記 建立websocket伺服器物件,監聽0.0.0.0 9502埠 ws new swoole websocket server 0.0.0.0 9501 監聽websocket連線開啟事件 客戶端想伺服器傳送資訊是呼叫函式 ws websocket 伺服...