国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

手冊(cè)里的主進(jìn)程和子進(jìn)程疑問(wèn)

renji566

問(wèn)題描述

下面手冊(cè)的主進(jìn)程和子進(jìn)程與上圖對(duì)應(yīng)嗎 ? 主進(jìn)程不是不處理邏輯嗎?這里不是很懂

三、區(qū)分主進(jìn)程和子進(jìn)程
有必要注意下代碼是運(yùn)行在主進(jìn)程還是子進(jìn)程,一般來(lái)說(shuō)在Worker::runAll();調(diào)用前運(yùn)行的代碼都是在主進(jìn)程運(yùn)行的,onXXX回調(diào)運(yùn)行的代碼都屬于子進(jìn)程。注意寫在Worker::runAll();后面的代碼永遠(yuǎn)不會(huì)被執(zhí)行。

例如下面的代碼

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// 運(yùn)行在主進(jìn)程
$tcp_worker = new Worker("tcp://0.0.0.0:2347");
// 賦值過(guò)程運(yùn)行在主進(jìn)程
$tcp_worker->onMessage = function(TcpConnection $connection, $data)
{
// 這部分運(yùn)行在子進(jìn)程
$connection->send('hello ' . $data);
};

Worker::runAll();
注意: 不要在主進(jìn)程中初始化數(shù)據(jù)庫(kù)、memcache、redis等連接資源,因?yàn)橹鬟M(jìn)程初始化的連接可能會(huì)被子進(jìn)程自動(dòng)繼承(尤其是使用單例的時(shí)候),所有進(jìn)程都持有同一個(gè)連接,服務(wù)端通過(guò)這個(gè)連接返回的數(shù)據(jù)在多個(gè)進(jìn)程上都可讀,會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)亂。同樣的,如果任何一個(gè)進(jìn)程關(guān)閉連接(例如daemon模式運(yùn)行時(shí)主進(jìn)程會(huì)退出導(dǎo)致連接關(guān)閉),都導(dǎo)致所有子進(jìn)程的連接都被一起關(guān)閉,并發(fā)生不可預(yù)知的錯(cuò)誤,例如mysql gone away 錯(cuò)誤。

推薦在onWorkerStart里面初始化連接資源

531 2 0
2個(gè)回答

liziyu

我理解:workerman只是同時(shí)管理了多個(gè)獨(dú)立的fpm模型進(jìn)程,并使它有序的常駐內(nèi)在并相互隔離。

  • renji566 2025-02-09

    這里代碼說(shuō)的主進(jìn)程和master有關(guān)系嗎

NoBody

master 進(jìn)程不處理任務(wù)業(yè)務(wù)邏輯,主要負(fù)責(zé)監(jiān)控 worker。圖沒(méi)問(wèn)題啊

  • renji566 2025-02-09

    那事例中的代碼運(yùn)行在主進(jìn)程指的是哪個(gè)主進(jìn)程

  • NoBody 2025-02-10

    master 主進(jìn)程。就是你運(yùn)行代碼那個(gè)進(jìn)程。代碼里面會(huì) fork worker 進(jìn)程出來(lái)處理業(yè)務(wù)邏輯的

??