Files
kiri-core/HttpServer/Events/OnManagerStart.php
T
as2252258@163.com 14eb4c0009 modify
2021-03-01 01:00:06 +08:00

79 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace HttpServer\Events;
use Exception;
use HttpServer\Abstracts\Callback;
use Snowflake\Abstracts\Config;
use Snowflake\Event;
use Snowflake\Snowflake;
use Swoole\Coroutine;
use Swoole\Process;
use Swoole\Server;
/**
* Class OnManagerStart
* @package HttpServer\Events
*/
class OnManagerStart extends Callback
{
/** @var int|string 重启信号 */
private int $signal = SIGUSR1 | SIGUSR2;
/** @var bool 是否打印 */
private bool $isPrint = false;
/**
* @param Server $server
* @throws Exception
*/
public function onHandler(Server $server)
{
Snowflake::setWorkerId($server->manager_pid);
$events = Snowflake::app()->getEvent();
$events->trigger(Event::SERVER_MANAGER_START, [$server]);
if (!Snowflake::isLinux()) {
return;
}
name(Config::get('id', false, 'system') . ' Server Manager.');
Process::signal($this->signal, [$this, 'onSignal']);
}
/**
* @param $server
* @param $worker_id
*/
public function onSignal()
{
while ($ret = Process::wait(false)) {
echo "PID={$ret['pid']}\n";
}
//
// $receive = Coroutine::waitSignal($this->signal, 30);
// while ($receive === true) {
// if ($this->isPrint === false) {
// $this->warning(sprintf('Receive Worker stop event.'));
// $this->isPrint = true;
// }
// if (!Snowflake::app()->isRun()) {
// break;
// }
// sleep(1);
// }
// return $server->stop();
}
}