
官方说是能够腻滑重启一切的worker和tasker历程,能够经由过程
$swoole->reload(),或许\swoole_process::kill($master_pid, SIGUSR1),或许直接kill -USR1 master_pid等等。
引荐进修: swoole视频教程
简朴测试
开启一个swoole_http_server,worker历程和tasker历程都为1个,然后浏览器提议一个http要求,要求的内容只是简朴的sleep一下,经由过程sleep函数,应该是能够申明处置惩罚此要求的worker,是正在处于事情状况的吧,然后在sleep时期,举行reload操纵。
当第一次提议一个要求到swoole server,manager历程会将要求调理到worker去举行处置惩罚,然后在worker处置惩罚的sleep时期,假如再有要求进来,manager是不会将后续的要求调理给唯一的worker历程,由于worker历程还在劳碌处置惩罚第一个要求。这个能够经由过程简朴测试确认。
http要求就是路由到下面的简朴要领。由于用的是easyswoole框架,实行php easyswoole reload all敕令,实在也就是kill -USR1 master_pid。
Server的设置
$swoole_server->set([ 'worker_num' => 1, 'task_worker_num' => 1, 'reload_async' => true, 'max
入手下手测试
1、使命逻辑写在worker历程内里
http要领
public function test() { $start = microtime(true); echo '要求入手下手时候:' . $start . PHP_EOL; echo 'pid: ' . getmypid() . PHP_EOL; sleep(30); # 这里就寝剧本作测试 echo 'finish sleep' . PHP_EOL; $end = microtime(true); echo '要求完毕时候:' . $end . PHP_EOL; $this->writeJson(0, round(($end - $start), 3)); }
监控onWorkerStart()要领
EventHelper::registerWithAdd(ServerManager::getInstance()->getMainEventRegister(),EventRegister::onWorkerStart,function (\swoole_server $server,$workerId){ if(PHP_OS != 'Darwin'){ $name = Config::getInstance()->getConf('SERVER_NAME'); if( ($workerId < Config::getInstance()->getConf('MAIN_SERVER.SETTING.worker_num')) && $workerId >= 0){ $type = 'Worker'; }else{ $type = 'TaskWorker'; } cli_set_process_title("{$name}.{$type}.{$workerId}"); } # 下面是打印测试的 if ($type == 'Worker') { echo "这个是reload worker的时候:" . microtime(true) . "\n"; } if ($type == 'TaskWorker') { echo "这个是reload TaskWorker的时候:" . microtime(true) . "\n"; } });
测试效果:
要求入手下手时候:1566880257.9533 # 这里要求http接口,就是test()
pid: 42108
这个是reload TaskWorker的时候:1566880265.1501 # 这里是实行 php easyswoole reload all 的时候,由于tasker余暇没使命,就立时就行reload了。
这个是reload worker的时候:1566880275.1524 # 这个是worker的reload时候,由于在test()内里sleep(30),而且超过了max_wait_time,底层不会继承守候worker的使命完成,直接把旧的worker完毕掉,效果也没有打印'finish sleep',建立了新的worker。
# 然则为何是10s才从新建立worker呢?max_wait_time设置为5s啊??这个是我一向想不明白的。
以上就是swoole怎样重启的细致内容,更多请关注ki4网别的相干文章!