Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1643a839b3 | |||
| d4a15d26ed | |||
| 485d926dc0 | |||
| 6a5205e9a1 | |||
| 471f7a92bb | |||
| 429ffe561c | |||
| 27cdf5082f | |||
| 4c3751ca4d |
+48
-1
@@ -18,6 +18,7 @@ use Kiri\Exception\NotFindClassException;
|
||||
use Kiri\Kiri;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Server\ServerManager;
|
||||
use Swoole\Process;
|
||||
use Swoole\WebSocket\Server;
|
||||
|
||||
if (!function_exists('make')) {
|
||||
@@ -52,6 +53,38 @@ if (!function_exists('make')) {
|
||||
}
|
||||
|
||||
|
||||
if (!function_exists('checkPortIsAlready')) {
|
||||
|
||||
|
||||
/**
|
||||
* @param $port
|
||||
* @return bool|string
|
||||
* @throws Exception
|
||||
*/
|
||||
function checkPortIsAlready($port): bool|string
|
||||
{
|
||||
if (!Kiri::getPlatform()->isLinux()) {
|
||||
exec("lsof -i :" . $port . " | grep -i 'LISTEN' | awk '{print $2}'", $output);
|
||||
if (empty($output)) return false;
|
||||
$output = explode(PHP_EOL, $output[0]);
|
||||
return $output[0];
|
||||
}
|
||||
|
||||
$serverPid = file_get_contents(storage('.swoole.pid'));
|
||||
if (!empty($serverPid) && shell_exec('ps -ef | grep ' . $serverPid . ' | grep -v grep')) {
|
||||
Process::kill($serverPid, SIGTERM);
|
||||
}
|
||||
|
||||
exec('netstat -lnp | grep ' . $port . ' | grep "LISTEN" | awk \'{print $7}\'', $output);
|
||||
if (empty($output)) {
|
||||
return false;
|
||||
}
|
||||
return explode('/', $output[0])[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!function_exists('done')) {
|
||||
|
||||
/**
|
||||
@@ -59,12 +92,26 @@ if (!function_exists('done')) {
|
||||
*/
|
||||
function done()
|
||||
{
|
||||
ServerManager::setEnv('state', 'exit');
|
||||
set_env('state', 'exit');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!function_exists('set_env')) {
|
||||
|
||||
|
||||
/**
|
||||
* @param $key
|
||||
* @param $value
|
||||
*/
|
||||
function set_env($key, $value)
|
||||
{
|
||||
putenv(sprintf('%s=%s', $key, $value));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!function_exists('enable_file_modification_listening')) {
|
||||
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ use Kiri\Jwt\Jwt;
|
||||
use Kiri\Kiri;
|
||||
use ReflectionException;
|
||||
use Server\ServerManager;
|
||||
use Server\SInterface\OnTaskInterface;
|
||||
use Server\Contract\OnTaskInterface;
|
||||
use Swoole\Table;
|
||||
|
||||
/**
|
||||
|
||||
@@ -136,7 +136,6 @@ class BaseObject implements Configure
|
||||
$message = print_r($message, true);
|
||||
}
|
||||
$message = "\033[35m[" . date('Y-m-d H:i:s') . '][DEBUG]: ' . $message . "\033[0m";
|
||||
$message .= PHP_EOL;
|
||||
|
||||
$this->logger()->debug(Logger::DEBUG, [$message, $method, $file]);
|
||||
}
|
||||
@@ -154,7 +153,6 @@ class BaseObject implements Configure
|
||||
$message = print_r($message, true);
|
||||
}
|
||||
$message = "\033[34m[" . date('Y-m-d H:i:s') . '][INFO]: ' . $message . "\033[0m";
|
||||
$message .= PHP_EOL;
|
||||
|
||||
$this->logger()->info(Logger::NOTICE, [$message, $method, $file]);
|
||||
}
|
||||
@@ -173,7 +171,6 @@ class BaseObject implements Configure
|
||||
}
|
||||
|
||||
$message = "\033[36m[" . date('Y-m-d H:i:s') . '][SUCCESS]: ' . $message . "\033[0m";
|
||||
$message .= PHP_EOL;
|
||||
|
||||
$this->logger()->notice(Logger::NOTICE, [$message, $method, $file]);
|
||||
}
|
||||
@@ -192,7 +189,6 @@ class BaseObject implements Configure
|
||||
}
|
||||
|
||||
$message = "\033[33m[" . date('Y-m-d H:i:s') . '][WARNING]: ' . $message . "\033[0m";
|
||||
$message .= PHP_EOL;
|
||||
|
||||
$this->logger()->critical(Logger::NOTICE, [$message, $method, $file]);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ defined('TASK_PATH') or define('TASK_PATH', APP_PATH . 'app/Async/');
|
||||
defined('LISTENER_PATH') or define('LISTENER_PATH', APP_PATH . 'app/Listener/');
|
||||
defined('KAFKA_PATH') or define('KAFKA_PATH', APP_PATH . 'app/Kafka/');
|
||||
defined('RPC_CLIENT_PATH') or define('RPC_CLIENT_PATH', APP_PATH . 'app/Client/Rpc/');
|
||||
defined('MODEL_PATH') or define('MODEL_PATH', APP_PATH . 'app/Models/');
|
||||
defined('MODEL_PATH') or define('MODEL_PATH', APP_PATH . 'app/Model/');
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -220,6 +220,13 @@ class Pool extends Component
|
||||
return;
|
||||
}
|
||||
while (static::$_connections[$name]->length() > 0) {
|
||||
if (static::$_connections[$name] instanceof Channel)
|
||||
{
|
||||
if (!Context::inCoroutine())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
$client = static::$_connections[$name]->pop();
|
||||
if ($client instanceof StopHeartbeatCheck) {
|
||||
$client->stopHeartbeatCheck();
|
||||
|
||||
+4
-4
@@ -30,11 +30,11 @@ class Gii
|
||||
|
||||
private InputInterface $input;
|
||||
|
||||
public string $modelPath = APP_PATH . 'app/Models/';
|
||||
public string $modelNamespace = 'App\\Models\\';
|
||||
public string $modelPath = APP_PATH . 'app/Model/';
|
||||
public string $modelNamespace = 'App\\Model\\';
|
||||
|
||||
public string $controllerPath = APP_PATH . 'app/Http/Controllers/';
|
||||
public string $controllerNamespace = 'App\\Controllers\\';
|
||||
public string $controllerPath = APP_PATH . 'app/Http/Controller/';
|
||||
public string $controllerNamespace = 'App\\Controller\\';
|
||||
|
||||
|
||||
public static array $createSqls = [];
|
||||
|
||||
@@ -24,11 +24,11 @@ abstract class GiiBase
|
||||
|
||||
protected InputInterface $input;
|
||||
|
||||
public string $modelPath = APP_PATH . 'app/Models/';
|
||||
public string $modelNamespace = 'App\Models\\';
|
||||
public string $modelPath = APP_PATH . 'app/Model/';
|
||||
public string $modelNamespace = 'App\Model\\';
|
||||
|
||||
public string $controllerPath = APP_PATH . 'app/Http/Controllers/';
|
||||
public string $controllerNamespace = 'App\\Controllers\\';
|
||||
public string $controllerPath = APP_PATH . 'app/Http/Controller/';
|
||||
public string $controllerNamespace = 'App\\Controller\\';
|
||||
|
||||
public ?string $module = null;
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ use Kiri\Core\Json;
|
||||
use Database\Connection;
|
||||
use Database\Annotation\Get;
|
||||
use Database\Annotation\Set;
|
||||
use Annotation\Model\Relation;
|
||||
use Database\Relation;
|
||||
use Database\Model;
|
||||
' . PHP_EOL;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ class GiiTask extends GiiBase
|
||||
|
||||
namespace App\Async;
|
||||
|
||||
use Server\SInterface\OnTaskInterface;
|
||||
use Server\Contract\OnTaskInterface;
|
||||
|
||||
';
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Kiri\Process;
|
||||
|
||||
interface OnProcessInterface
|
||||
{
|
||||
|
||||
public function handle();
|
||||
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Kiri\Process;
|
||||
|
||||
abstract class Process implements OnProcessInterface
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @var \Swoole\Process
|
||||
*/
|
||||
protected \Swoole\Process $process;
|
||||
|
||||
|
||||
/**
|
||||
* @var mixed
|
||||
*/
|
||||
protected mixed $redirect_stdin_and_stdout = null;
|
||||
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
protected int $pipe_type = SOCK_DGRAM;
|
||||
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected bool $enable_coroutine = true;
|
||||
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected string $name = '';
|
||||
|
||||
/**
|
||||
* @return \Swoole\Process
|
||||
*/
|
||||
public function getProcess(): \Swoole\Process
|
||||
{
|
||||
return $this->process;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getRedirectStdinAndStdout(): mixed
|
||||
{
|
||||
return $this->redirect_stdin_and_stdout;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
public function getPipeType(): int
|
||||
{
|
||||
return $this->pipe_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function isEnableCoroutine(): bool
|
||||
{
|
||||
return $this->enable_coroutine;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getName(): string
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param \Swoole\Process $process
|
||||
*/
|
||||
public function start(\Swoole\Process $process)
|
||||
{
|
||||
$this->process = $process;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Kiri\Process;
|
||||
|
||||
require_once 'OnProcessInterface.php';
|
||||
require_once 'Process.php';
|
||||
|
||||
use function Co\run;
|
||||
|
||||
class TestProcess extends Process
|
||||
{
|
||||
|
||||
|
||||
protected string $name = 'test process';
|
||||
|
||||
|
||||
/**
|
||||
*/
|
||||
public function onStart()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public function handle()
|
||||
{
|
||||
// TODO: Implement doWhile() method.
|
||||
}
|
||||
|
||||
|
||||
public function onShutdown()
|
||||
{
|
||||
// TODO: Implement onShutdown() method.
|
||||
}
|
||||
}
|
||||
|
||||
$array = [];
|
||||
|
||||
for ($i = 0; $i < 10; $i++) {
|
||||
$class = new TestProcess();
|
||||
$process = new \Swoole\Process([$class, 'start'], $class->getRedirectStdinAndStdout(),
|
||||
$class->getPipeType(), $class->isEnableCoroutine());
|
||||
$process->start();
|
||||
|
||||
array_push($array, $process);
|
||||
}
|
||||
run(function () use ($array) {
|
||||
|
||||
foreach ($array as $value) {
|
||||
var_dump($value->getCallback());
|
||||
}
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user