modify
This commit is contained in:
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
namespace HttpServer\Events;
|
namespace HttpServer\Events;
|
||||||
|
|
||||||
|
|
||||||
|
use Annotation\Loader;
|
||||||
use Exception;
|
use Exception;
|
||||||
use HttpServer\Abstracts\Callback;
|
use HttpServer\Abstracts\Callback;
|
||||||
use Snowflake\Event;
|
use Snowflake\Event;
|
||||||
@@ -18,18 +19,26 @@ use Swoole\Server;
|
|||||||
class OnPipeMessage extends Callback
|
class OnPipeMessage extends Callback
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Server $server
|
* @param Server $server
|
||||||
* @param int $src_worker_id
|
* @param int $src_worker_id
|
||||||
* @param $message
|
* @param $message
|
||||||
* @throws ComponentException
|
* @throws ComponentException
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function onHandler(Server $server, int $src_worker_id, $message)
|
public function onHandler(Server $server, int $src_worker_id, $message)
|
||||||
{
|
{
|
||||||
// TODO: Implement onHandler() method.
|
// TODO: Implement onHandler() method.
|
||||||
$events = Snowflake::app()->getEvent();
|
if (is_array($message) && ($message[1] ?? null) instanceof Loader) {
|
||||||
$events->trigger(Event::PIPE_MESSAGE, [$server, $src_worker_id, $message]);
|
if ($src_worker_id > $server->setting['worker_num']) {
|
||||||
}
|
$message[1]->loadByDirectory(MODEL_PATH);
|
||||||
|
} else {
|
||||||
|
$message[1]->loadByDirectory(APP_PATH);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$events = Snowflake::app()->getEvent();
|
||||||
|
$events->trigger(Event::PIPE_MESSAGE, [$server, $src_worker_id, $message]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,13 +39,10 @@ class OnWorkerStart extends Callback
|
|||||||
|
|
||||||
name($server->worker_pid, $worker_id >= $server->setting['worker_num'] ? 'task' : 'worker');
|
name($server->worker_pid, $worker_id >= $server->setting['worker_num'] ? 'task' : 'worker');
|
||||||
|
|
||||||
$loader = Snowflake::app()->get(ServerInotify::class)->getLoader();
|
|
||||||
var_dump($loader);
|
|
||||||
|
|
||||||
if ($worker_id >= $server->setting['worker_num']) {
|
if ($worker_id >= $server->setting['worker_num']) {
|
||||||
$this->onTask($server, $worker_id, $loader);
|
$this->onTask($server, $worker_id);
|
||||||
} else {
|
} else {
|
||||||
$this->onWorker($server, $worker_id, $loader);
|
$this->onWorker($server, $worker_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,14 +52,12 @@ class OnWorkerStart extends Callback
|
|||||||
* @param int $worker_id
|
* @param int $worker_id
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function onTask(Server $server, int $worker_id, Loader $loader)
|
public function onTask(Server $server, int $worker_id)
|
||||||
{
|
{
|
||||||
putenv('environmental=' . Snowflake::TASK);
|
putenv('environmental=' . Snowflake::TASK);
|
||||||
|
|
||||||
Snowflake::setTaskId($server->worker_pid);
|
Snowflake::setTaskId($server->worker_pid);
|
||||||
|
|
||||||
$loader->loadByDirectory(MODEL_PATH);
|
|
||||||
|
|
||||||
fire(Event::SERVER_TASK_START);
|
fire(Event::SERVER_TASK_START);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,13 +67,11 @@ class OnWorkerStart extends Callback
|
|||||||
* @param int $worker_id
|
* @param int $worker_id
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function onWorker(Server $server, int $worker_id, Loader $loader)
|
public function onWorker(Server $server, int $worker_id)
|
||||||
{
|
{
|
||||||
Snowflake::setWorkerId($server->worker_pid);
|
Snowflake::setWorkerId($server->worker_pid);
|
||||||
putenv('environmental=' . Snowflake::WORKER);
|
putenv('environmental=' . Snowflake::WORKER);
|
||||||
|
|
||||||
$loader->loadByDirectory(APP_PATH);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
fire(Event::SERVER_WORKER_START, [$worker_id]);
|
fire(Event::SERVER_WORKER_START, [$worker_id]);
|
||||||
} catch (\Throwable $exception) {
|
} catch (\Throwable $exception) {
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ class ServerInotify extends Process
|
|||||||
*/
|
*/
|
||||||
public function getLoader()
|
public function getLoader()
|
||||||
{
|
{
|
||||||
return $this->getLoader();
|
$annotation = Snowflake::app()->getAnnotation();
|
||||||
|
return $annotation->getLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -73,6 +74,16 @@ class ServerInotify extends Process
|
|||||||
if (!is_dir($dir)) continue;
|
if (!is_dir($dir)) continue;
|
||||||
$this->watch($dir);
|
$this->watch($dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$worker = Snowflake::app()->getSwoole();
|
||||||
|
|
||||||
|
$workerNum = $worker->setting['worker_num'];
|
||||||
|
$task_worker_num = $worker->setting['task_worker_num'] ?? 0;
|
||||||
|
|
||||||
|
for ($i = 0; $i < $workerNum + $task_worker_num; $i++) {
|
||||||
|
$worker->sendMessage(['reload', $this->getLoader()], $i);
|
||||||
|
}
|
||||||
|
|
||||||
Event::add($this->inotify, [$this, 'check']);
|
Event::add($this->inotify, [$this, 'check']);
|
||||||
Event::wait();
|
Event::wait();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user