PHP 多程序通訊 訊息佇列使用

2021-09-27 09:05:58 字數 1155 閱讀 2624

向訊息佇列傳送資料和獲取資料的測試

<?php 

$key=ftok(__file__,'a');

//獲取訊息佇列

$queue=msg_get_queue($key,0666);

//傳送訊息

//msg_send($queue, 1, "hello, 1");

//接收訊息,如果接收不到會阻塞

msg_receive($queue, 1, $message_type, 1024, $message1

);//

移除訊息

* 這段**模擬了乙個日常的任務。

* 第乙個父程序產生了乙個子程序。子程序又作為父程序,產生10個子程序。

* 可以簡化為a -> b -> c,d,e... 等程序。

* 作為a來說,只需要生產任務,然後交給b 來處理。b 則會將任務分配給10個子程序來進行處理。

* *///

設定指令碼永不超時

set_time_limit(0);

$ftok = ftok(__file__, 'a');

$msg_queue = msg_get_queue($ftok

);$pidarr =;

//產生子程序

$pid =pcntl_fork();

if ($pid

)

$pidarr = $pid

; msg_remove_queue(

$msg_queue

);}

else

else

}

} }//

防止主程序先於子程序退出,形成殭屍程序

程序通訊(訊息佇列)

訊息佇列與管道不同的是,訊息佇列是基於訊息的,而管道是基於位元組流的,且訊息佇列的讀取不一定是先入先出。訊息佇列與命名管道有一 樣的不足,就是每個訊息的最大長度是有上限的 msgmax 每個訊息佇列的總的位元組 數是有上限的 msgmnb 系統上訊息佇列的總數也有乙個上限 msgmni ipc物件資...

程序通訊 訊息佇列

訊息佇列的使用 建立開啟訊息佇列msgget 讀資料從佇列msgrcv 寫資料到佇列msgsnd 控制訊息佇列msgctl 目前主要有兩種型別的訊息佇列 posix訊息佇列以及系統v訊息佇列,系統v訊息佇列目前被大量使用 訊息佇列的核心持續性要求每個訊息佇列都在系統範圍內對應唯一的鍵值,所以,要獲得...

Linux程序通訊 訊息佇列

1.訊息佇列 訊息佇列也稱為報文佇列,訊息佇列是隨核心持續的,只有在核心重起或顯示刪除乙個訊息佇列時,該訊息佇列才會真正刪除 系統中記錄訊息佇列的資料結構struct ipc ids msg ids位於核心中,系統中所有訊息佇列都可以在結構msg ids中找到訪問入口 訊息佇列其實就是乙個訊息的鍊錶...