$worker = new Worker('tcp://0.0.0.0:9090');
//啟動(dòng)1個(gè)進(jìn)程對(duì)外提供服務(wù)
$worker -> count = 1;
Worker::$daemonize = true;
Worker::$stdoutFile = '/tmp/stdout.log';
//增加一個(gè)屬性
$worker -> uidConnections = array();//c++客戶端信息
$worker -> onWorkerStart = function($worker){$alarm = new Alarm();//這是新開了另一個(gè)worker
$alarm -> start();$allLine = new AllLine();//這是新開了另一個(gè)worker
$allLine -> start();
$worker -> onConnect = function($connection){
global $worker;
$ip = $connection -> getRemoteIp();
$id = $connection -> id;
$worker -> uidConnections = $connection;
$GLOBALS = Timer::add(0.001,array('DealData','dealSream'),array($id, $connection),true);//隔1ms處理一次stream
};
$worker -> onMessage = function($connection,$datas){
//#考慮校驗(yàn)
$GLOBALS += strlen($datas);
$id = $connection -> id;
if(!isset($GLOBALS)){
$GLOBALS = $datas;
}else{
$GLOBALS .= $datas;//接收流到緩沖區(qū)
}
};如上,新開的兩個(gè)worker如果業(yè)務(wù)比較慢,會(huì)否影響最外層worker的接收數(shù)據(jù)?里面兩個(gè)算是子進(jìn)程嗎
1.? 位于onWorkerStart內(nèi)worker如果業(yè)務(wù)比較慢,會(huì)影響到即阻塞最外層worker的接收數(shù)據(jù)的。
2.??位于onWorkerStart內(nèi)worker所在的進(jìn)程是子進(jìn)程。
3.? 如果業(yè)務(wù)比較繁重,就不要放在?onWorkerStart 里搞,應(yīng)該采用異步模型將繁重的任務(wù)轉(zhuǎn)發(fā)給獨(dú)立的業(yè)務(wù)worker來搞。