PHP swoole server幾個程序的分工

2022-03-18 06:46:18 字數 2194 閱讀 5713

readme.md—/users/zjh/documents/我的文章/[php]swoole_server幾個程序的分工

摘要:swoole是乙個php語言的高效能網路通訊框架,提供了php語言的非同步多執行緒伺服器,非同步tcp/udp網路客戶端,非同步mysql,資料庫連線池,asynctask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步dns查詢。強大的功能,由背後若干個分工明確的程序來實現,這裡詳細介紹下幾個程序的分工,以便入門者更快速的理解swoole框架。

主要程序分析

程序與事件**的對應關係

swoole官網

swoole:php語言的高效能網路通訊框架,提供了php語言的非同步多執行緒伺服器,非同步tcp/udp網路客戶端,非同步mysql,資料庫連線池,asynctask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步dns查詢。

swoole雖然是標準的php擴充套件,實際上與普通的擴充套件不同。普通的擴充套件只是提供乙個庫函式。而swoole擴充套件在執行後會接管php的控制權,進入事件迴圈。當io事件發生後,swoole會自動**指定的php函式。

tcp server

$serv = new swoole_server("127.0.0.1", 9501);

$serv->set(array(

'worker_num' => 8, //工作程序數量

'daemonize' => true, //是否作為守護程序

));$serv->on('connect', function ($serv, $fd));

$serv->on('receive', function ($serv, $fd, $from_id, $data) );

$serv->on('close', function ($serv, $fd) );

$serv->start();

tcp client

$client = new swoole_client(swoole_sock_tcp, swoole_sock_async);

//設定事件**函式

$client->on("connect", function($cli) );

$client->on("receive", function($cli, $data));

$client->on("error", function($cli));

$client->on("close", function($cli));

//發起網路連線

$client->connect('127.0.0.1', 9501, 0.5);

更多**片段請見swoole官網。

master程序主要用來保證swoole框架機制的執行。它會建立幾個功能性的執行緒:

swoole中worker/task程序都是由manager程序fork並管理的。

為什麼不是master程序呢,主要原因是master程序是多執行緒的,不能安全的執行fork操作。

swoole提供了完善的程序管理機制,當worker程序異常退出,如發生php的致命錯誤、被其他程式誤殺,或達到max_request次數之後正常退出。主程序會重新拉起新的worker程序。 worker程序內可以像普通的apache+php或者php-fpm中寫**。不需要像node.js那樣寫非同步**的**。

task程序的全稱是task_worker程序,是一種特殊的worker程序。所以onworkerstart在task程序中也會被呼叫。當$worker_id >= $serv->setting['worker_num']時表示這個程序是task_worker,否則,代表此程序是worker程序。

onstart

onshutdown

onmasterconnect

onmasterclose

ontimer

onworkerstart

onworkerstop

onconnect

onclose

onreceive

ontimer

onfinish

ontask

onworkerstart

onmanagerstart

onmanagerstop

linux程序的幾個狀態

linux程序的幾個狀態 1.linux程序狀態 r task running 可執行狀態 執行狀態 在run queue佇列裡的狀態 2.linux程序狀態 s task interruptible 可中斷的睡眠狀態,可處理signal 3.linux程序狀態 d task uninterrupt...

LINUX程序相關的幾個函式

linux程序相關的幾個函式 1.pid t fork void 返回值 若成功呼叫一次則返回兩個值,子程序返回0,父程序返回子程序id 否則,出錯返回 1 2.exit 0 就是退出,傳入的引數是程式退出時的狀態碼,0表示正常退出,其他表示非正常退出,一般都用 1或者1,標準c裡有exit suc...

程序控制相關的幾個函式

通常,建立新的程序,都是為了立即執行新的 不同的程式。所以一般都是fork 系統呼叫建立新程序,然後使用exec 系統呼叫函式組,來建立新的位址空間,把新的程式載入進去。最終,通過exit 系統呼叫退出程序,這個函式會終結程序,並釋放該程序占用的資源。父程序可以通過wait 系統呼叫,檢視子程序是否...