This commit is contained in:
2021-09-06 14:30:20 +08:00
parent 728f95492f
commit e5dc0b7836
4 changed files with 597 additions and 591 deletions
+7 -9
View File
@@ -28,10 +28,10 @@ use Server\ServerProviders;
use stdClass;
use Swoole\Process;
use Swoole\Timer;
use Symfony\Component\Console\Application as ConsoleApplication;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Output\ConsoleOutput;
use Symfony\Component\Console\Application as ConsoleApplication;
/**
* Class Init
@@ -68,7 +68,7 @@ class Application extends BaseApplication
/**
* @throws NotFindClassException
* @throws
*/
public function withDatabase()
{
@@ -77,7 +77,7 @@ class Application extends BaseApplication
/**
* @throws NotFindClassException
* @throws
*/
public function withCrontab()
{
@@ -118,9 +118,7 @@ class Application extends BaseApplication
/**
* @throws NotFindClassException
* @throws ReflectionException
* @throws Exception
* @throws
*/
public function withFileChangeListen()
{
@@ -163,7 +161,7 @@ class Application extends BaseApplication
public function import(string $service): static
{
if (!class_exists($service)) {
throw new NotFindClassException($service);
return $this;
}
$class = Kiri::getDi()->get($service);
if (method_exists($class, 'onImport')) {
@@ -192,7 +190,7 @@ class Application extends BaseApplication
*/
public function register(string $command)
{
di(ConsoleApplication::class)->add(di($command));
di(ConsoleApplication::class)->add(di($command));
}
@@ -239,7 +237,7 @@ class Application extends BaseApplication
*/
private function enableFileChange(Command $class, $input, $output): void
{
fire(new OnBeforeCommandExecute());
fire(new OnBeforeCommandExecute());
if (!($class instanceof ServerCommand)) {
scan_directory(directory('app'), 'App');
}
File diff suppressed because it is too large Load Diff
+57 -59
View File
@@ -10,7 +10,6 @@ use Kiri\Abstracts\Config;
use Kiri\Di\NoteManager;
use Kiri\Exception\ConfigException;
use Kiri\Kiri;
use Kiri\Runtime;
use Psr\EventDispatcher\EventDispatcherInterface;
use ReflectionException;
use Server\ServerManager;
@@ -22,15 +21,15 @@ class OnWorkerStart implements EventDispatcherInterface
/**
* @var Annotation
*/
#[Inject(Annotation::class)]
public Annotation $annotation;
#[Inject(Annotation::class)]
public Annotation $annotation;
/**
* @var Router
*/
#[Inject(Router::class)]
public Router $router;
#[Inject(Router::class)]
public Router $router;
/**
@@ -40,68 +39,67 @@ class OnWorkerStart implements EventDispatcherInterface
* @throws ReflectionException
* @throws Exception
*/
public function dispatch(object $event)
{
$isWorker = $event->workerId < $event->server->setting['worker_num'];
public function dispatch(object $event)
{
$isWorker = $event->workerId < $event->server->setting['worker_num'];
$this->annotation->read(APP_PATH . 'app', 'App');
$this->interpretDirectory();
if ($isWorker) {
ServerManager::setEnv('environmental', Kiri::WORKER);
Kiri::getFactory()->getRouter()->_loader();
$this->interpretDirectory();
if ($isWorker) {
ServerManager::setEnv('environmental', Kiri::WORKER);
Kiri::getFactory()->getRouter()->_loader();
echo sprintf("\033[36m[" . date('Y-m-d H:i:s') . "]\033[0m Worker[%d].%d start.", $event->server->worker_pid, $event->workerId) . PHP_EOL;
echo sprintf("\033[36m[" . date('Y-m-d H:i:s') . "]\033[0m Worker[%d].%d start.", $event->server->worker_pid, $event->workerId) . PHP_EOL;
$this->setProcessName(sprintf('Worker[%d].%d', $event->server->worker_pid, $event->workerId));
} else {
ServerManager::setEnv('environmental', Kiri::TASK);
$this->setProcessName(sprintf('Worker[%d].%d', $event->server->worker_pid, $event->workerId));
} else {
ServerManager::setEnv('environmental', Kiri::TASK);
echo sprintf("\033[36m[" . date('Y-m-d H:i:s') . "]\033[0m Tasker[%d].%d start.", $event->server->worker_pid, $event->workerId) . PHP_EOL;
echo sprintf("\033[36m[" . date('Y-m-d H:i:s') . "]\033[0m Tasker[%d].%d start.", $event->server->worker_pid, $event->workerId) . PHP_EOL;
$this->setProcessName(sprintf('Tasker[%d].%d', $event->server->worker_pid, $event->workerId));
}
}
$this->setProcessName(sprintf('Tasker[%d].%d', $event->server->worker_pid, $event->workerId));
}
}
/**
* @param $prefix
* @throws ConfigException
*/
protected function setProcessName($prefix)
{
if (Kiri::getPlatform()->isMac()) {
return;
}
$name = Config::get('id', 'system-service');
if (!empty($prefix)) {
$name .= '.' . $prefix;
}
swoole_set_process_name($name);
}
/**
* @param $prefix
* @throws ConfigException
*/
protected function setProcessName($prefix)
{
if (Kiri::getPlatform()->isMac()) {
return;
}
$name = Config::get('id', 'system-service');
if (!empty($prefix)) {
$name .= '.' . $prefix;
}
swoole_set_process_name($name);
}
/**
* @throws ReflectionException
* @throws Exception
*/
private function interpretDirectory()
{
$fileLists = $this->annotation->runtime(APP_PATH . 'app');
$di = Kiri::getDi();
foreach ($fileLists as $class) {
foreach (NoteManager::getTargetNote($class) as $value) {
$value->execute($class);
}
$methods = $di->getMethodAttribute($class);
foreach ($methods as $method => $attribute) {
if (empty($attribute)) {
continue;
}
foreach ($attribute as $item) {
$item->execute($class, $method);
}
}
}
}
/**
* @throws ReflectionException
* @throws Exception
*/
private function interpretDirectory()
{
$di = Kiri::getDi();
$fileLists = $this->annotation->read(APP_PATH . 'app');
foreach ($fileLists->runtime(APP_PATH . 'app') as $class) {
foreach (NoteManager::getTargetNote($class) as $value) {
$value->execute($class);
}
$methods = $di->getMethodAttribute($class);
foreach ($methods as $method => $attribute) {
if (empty($attribute)) {
continue;
}
foreach ($attribute as $item) {
$item->execute($class, $method);
}
}
}
}
}
+3 -2
View File
@@ -61,12 +61,13 @@ class Annotation extends Component
* @param string $path
* @param string $namespace
* @param array $exclude
* @return void
* @return static
* @throws Exception
*/
public function read(string $path, string $namespace = 'App', array $exclude = []): void
public function read(string $path, string $namespace = 'App', array $exclude = []): static
{
$this->_loader->_scanDir(new DirectoryIterator($path), $namespace, $exclude);
return $this;
}