This commit is contained in:
as2252258@163.com
2021-02-28 00:38:51 +08:00
parent f419d015c1
commit d095302ded
2 changed files with 29 additions and 22 deletions
+11 -12
View File
@@ -40,7 +40,6 @@ class OnWorkerStart extends Callback
*/
public function onHandler(Server $server, int $worker_id): void
{
Coroutine::set(['enable_deadlock_check' => false]);
putenv('workerId=' . $worker_id);
$get_name = $this->get_process_name($server, $worker_id);
@@ -48,7 +47,7 @@ class OnWorkerStart extends Callback
swoole_set_process_name($get_name);
}
$this->onSignal($server, $worker_id);
// $this->onSignal($server, $worker_id);
if ($worker_id >= $server->setting['worker_num']) {
fire(Event::SERVER_TASK_START);
@@ -65,18 +64,18 @@ class OnWorkerStart extends Callback
* @param $server
* @param $worker_id
*/
public function onSignal($server, $worker_id)
{
$this->debug(sprintf(workerName($worker_id) . ' #%d is start.....', $worker_id));
// public function onSignal($server, $worker_id)
// {
// $this->debug(sprintf(workerName($worker_id) . ' #%d is start.....', $worker_id));
// Coroutine\go(function (Server $server, $worker_id) {
Coroutine::waitSignal($this->signal);
while (Co::stats()['coroutine_num'] > 0) {
var_dump(Co::stats()['coroutine_num']);
sleep(1);
}
return $server->stop($worker_id, true);
// Coroutine::waitSignal($this->signal);
// while (Co::stats()['coroutine_num'] > 0) {
// var_dump(Co::stats()['coroutine_num']);
// Coroutine::sleep(1);
// }
// return $server->stop($worker_id, true);
// }, $server, $worker_id);
}
// }
/**
+18 -10
View File
@@ -24,8 +24,10 @@ use Snowflake\Exception\NotFindClassException;
use Snowflake\Process\Biomonitoring;
use Snowflake\Process\ServerInotify;
use Snowflake\Snowflake;
use Swoole\Coroutine;
use Swoole\Process;
use Swoole\Runtime;
use co;
/**
* Class Server
@@ -194,6 +196,16 @@ class Server extends HttpService
$this->stop($this);
}
private int $_types = SWOOLE_HOOK_TCP |
SWOOLE_HOOK_UNIX |
SWOOLE_HOOK_UDP |
SWOOLE_HOOK_UDG |
SWOOLE_HOOK_SSL |
SWOOLE_HOOK_TLS |
SWOOLE_HOOK_SLEEP |
SWOOLE_HOOK_STREAM_FUNCTION |
SWOOLE_HOOK_PROC;
/**
* @param bool $isEnable
@@ -203,16 +215,12 @@ class Server extends HttpService
if (!$isEnable) {
return;
}
Runtime::enableCoroutine(true, SWOOLE_HOOK_TCP |
SWOOLE_HOOK_UNIX |
SWOOLE_HOOK_UDP |
SWOOLE_HOOK_UDG |
SWOOLE_HOOK_SSL |
SWOOLE_HOOK_TLS |
SWOOLE_HOOK_SLEEP |
SWOOLE_HOOK_STREAM_FUNCTION |
SWOOLE_HOOK_PROC
);
Runtime::enableCoroutine(true, $this->_types);
$container['enable_deadlock_check'] = false;
$container['exit_condition'] = function () {
return Co::stats()['coroutine_num'] === 0;
};
Coroutine::set($container);
}