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程序。
onstartonshutdown
onmasterconnect
onmasterclose
ontimer
onworkerstartonworkerstop
onconnect
onclose
onreceive
ontimer
onfinish
ontaskonworkerstart
onmanagerstartonmanagerstop
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 系統呼叫,檢視子程序是否...