Files
zhamao-framework/src/ZM/Event/SwooleEvent/OnBeforeReload.php

32 lines
754 B
PHP
Raw Normal View History

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