2021-03-29 15:34:24 +08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace ZM\Event\SwooleEvent;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use Swoole\Process;
|
2021-07-09 01:38:30 +08:00
|
|
|
use Swoole\WebSocket\Server;
|
2021-03-29 15:34:24 +08:00
|
|
|
use ZM\Annotation\Swoole\SwooleHandler;
|
2021-11-16 15:41:01 +08:00
|
|
|
use ZM\Config\ZMConfig;
|
2021-03-29 15:34:24 +08:00
|
|
|
use ZM\Console\Console;
|
|
|
|
|
use ZM\Event\SwooleEvent;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Class OnBeforeReload
|
|
|
|
|
* @package ZM\Event\SwooleEvent
|
|
|
|
|
* @SwooleHandler("BeforeReload")
|
|
|
|
|
*/
|
|
|
|
|
class OnBeforeReload implements SwooleEvent
|
|
|
|
|
{
|
2021-07-09 01:38:30 +08:00
|
|
|
public function onCall(Server $server) {
|
2021-03-29 15:34:24 +08:00
|
|
|
Console::info(Console::setColor("Reloading server...", "gold"));
|
|
|
|
|
for ($i = 0; $i < ZM_WORKER_NUM; ++$i) {
|
2021-07-09 01:38:30 +08:00
|
|
|
Process::kill(zm_atomic("_#worker_" . $i)->get(), SIGUSR1);
|
2021-03-29 15:34:24 +08:00
|
|
|
}
|
2021-11-16 15:41:01 +08:00
|
|
|
$conf = ZMConfig::get("global", "runtime")["reload_delay_time"] ?? 800;
|
|
|
|
|
if ($conf !== 0) usleep($conf * 1000);
|
2021-03-29 15:34:24 +08:00
|
|
|
}
|
|
|
|
|
}
|