This commit is contained in:
lq 2024-05-22 14:49:06 +08:00
parent 0ffab55fa0
commit df89d1d416
9 changed files with 227 additions and 47 deletions

1
Buddha.pid Normal file
View File

@ -0,0 +1 @@
42

View File

@ -4,7 +4,7 @@ return [
'default' => [ 'default' => [
'driver' => 'mysql', 'driver' => 'mysql',
'host' => '127.0.0.1', 'host' => '127.0.0.1',
'database' => 'saiadmin', 'database' => 'blog',
'username' => 'root', 'username' => 'root',
'password' => '123456', 'password' => '123456',
'port' => 3306, 'port' => 3306,

View File

@ -1,8 +1,8 @@
<?php <?php
return [ return [
"default" => [ "default" => [
"min" => 100, "min" => 10,
"max" => 200, "max" => 20,
"idleTime" => 30 "idleTime" => 20
] ]
]; ];

View File

@ -8,6 +8,8 @@ use Core\annotations\RequestMapping;
use Core\http\Request; use Core\http\Request;
use Core\http\Response; use Core\http\Response;
use Core\init\MyDB; use Core\init\MyDB;
use DI\Attribute\Inject;
/** /**
* @Bean() * @Bean()
*/ */
@ -22,6 +24,8 @@ class UserController
* @Value () * @Value ()
*/ */
public $version = '1.0'; public $version = '1.0';
#[Inject]
private User $user;
/** /**
* @RequestMapping(value="/user/test") * @RequestMapping(value="/user/test")
@ -48,4 +52,13 @@ class UserController
{ {
$response->writeRedirect('http://www.baihand.com'); $response->writeRedirect('http://www.baihand.com');
} }
/**
* @RequestMapping(value="/user/json")
*/
public function json()
{
$user = $this->user::first();
return ['code' => 1, 'msg' => 'success', 'data' => $user];
}
} }

View File

@ -44,9 +44,27 @@ abstract class DBPool
if ($dbObject) { if ($dbObject) {
$dbObject->usedTime = time(); $dbObject->usedTime = time();
} }
$res = $this->pdoPing($dbObject->db);
if (!$res) {
$this->count--;
$this->addDBToPool();
return $this->getConnection();
}
return $dbObject; return $dbObject;
} }
function pdoPing($dbconn){
try{
$dbconn->getAttribute(\PDO::ATTR_SERVER_INFO);
} catch (\Exception $e) {
/*if(strpos($e->getMessage(), 'MySQL server has gone away')!==false){
return false;
}*/
return false;
}
return true;
}
public function close($conn) public function close($conn)
{ {
if ($conn) { if ($conn) {
@ -71,7 +89,7 @@ abstract class DBPool
public function cleanPool() public function cleanPool()
{ {
if ($this->conns->length() < $this->min && $this->conns->length()<intval($this->max*0.6)) { if ($this->conns->length() < $this->min && $this->conns->length()<intval($this->max * 0.6)) {
return ; return ;
} }
$dbbak = []; $dbbak = [];

View File

@ -24,7 +24,9 @@ class PDOPool extends DBPool
$password = $default["password"]; $password = $default["password"];
$dsn = "$driver:host=$host;dbname=$dbname"; $dsn = "$driver:host=$host;dbname=$dbname";
} }
$options = array(
\PDO::ATTR_PERSISTENT => true
);
$pdo = new \PDO($dsn, $username, $password); $pdo = new \PDO($dsn, $username, $password);
return $pdo; return $pdo;
} }

View File

@ -11,7 +11,6 @@ class HttpServer
public function __construct($str = 'dd') public function __construct($str = 'dd')
{ {
var_dump($str);
if ($str == 'dd') return; if ($str == 'dd') return;
$this->server = new Server("0.0.0.0",8085); $this->server = new Server("0.0.0.0",8085);
//配置参数 https://wiki.swoole.com/#/server/setting //配置参数 https://wiki.swoole.com/#/server/setting
@ -27,18 +26,22 @@ class HttpServer
$this->server->on('ShutDown', [$this, 'onShutDown']); $this->server->on('ShutDown', [$this, 'onShutDown']);
$this->server->on('WorkerStart',[$this,'onWorkerStart']); $this->server->on('WorkerStart',[$this,'onWorkerStart']);
$this->server->on('ManagerStart', [$this,"onManagerStart"]);
} }
public function onWorkerStart(Server $server,int $workerId) public function onWorkerStart(Server $server,int $workerId)
{ {
//cli_set_process_title("ttt worker"); //设置进程名称 //cli_set_process_title('baihand worker');//设置进程名称
//把index文件里的代码搬过来
\Core\BeanFactory::init(); \Core\BeanFactory::init();
$this->dispatcher = \Core\BeanFactory::getBean('RouterCollector')->getDispatcher(); $this->dispatcher = \Core\BeanFactory::getBean('RouterCollector')->getDispatcher();
} }
public function onManagerStart(Server $server)
{
//cli_set_process_title('baihand manger');
}
public function onStart(Server $server) public function onStart(Server $server)
{ {
//cli_set_process_title('baihand manger');
$mid = $server->master_pid; //返回当前服务器主进程的 PID。 $mid = $server->master_pid; //返回当前服务器主进程的 PID。
file_put_contents("./Buddha.pid", $mid); //会覆盖 file_put_contents("./Buddha.pid", $mid); //会覆盖
} }
@ -75,7 +78,7 @@ class HttpServer
public function run() public function run()
{ {
$p = new TestProcess(); //$p = new TestProcess();
//$this->server->addProcess($p->run()); //$this->server->addProcess($p->run());
echo '就要启动了喂......' . PHP_EOL; echo '就要启动了喂......' . PHP_EOL;
$this->server->start(); $this->server->start();

View File

@ -1,39 +1,11 @@
<?php <?php
require_once __DIR__ . '/vendor/autoload.php';
use Swoole\Http\Request; $a = 444;
use Swoole\Http\Response;
require_once __DIR__."/app/config/define.php";
\Core\BeanFactory::init(); try {
$dispatcher = \Core\BeanFactory::getBean('RouterCollector')->getDispatcher(); $b = 10 / 0;
}catch (Exception $e) {
$http = new Swoole\Http\Server("0.0.0.0",8085); //echo $e->getMessage();
} finally {
var_dump('hahaha cuo la ba');
$http->on('request',function (Request $request,Response $response) use ($dispatcher) { }
$myRequest = Core\http\Request::init($request);
$myResponse = \Core\http\Response::init($response);
$routeInfo = $dispatcher->dispatch($myRequest->getMethod(),$myRequest->getUri());
//var_dump($routeInfo);
switch($routeInfo[0]) {
case FastRoute\Dispatcher::NOT_FOUND:
$response->status(404);
$response->end();
break;
case FastRoute\Dispatcher::METHOD_NOT_ALLOWED:
$response->status(405);
$response->end();
break;
case FastRoute\Dispatcher::FOUND:
$handler = $routeInfo[1];
$vars = $routeInfo[2];//参数
$extVars = [$myRequest, $myResponse];
//$response->end($handler($vars, $extVars));
$myResponse->setBody($handler($vars,$extVars));
$myResponse->end();
break;
}
});
$http->start();

171
swoole-cli.exe.stackdump Normal file
View File

@ -0,0 +1,171 @@
Exception: STATUS_ACCESS_VIOLATION at rip=0001008C745A
rax=00000001008308E0 rbx=0000000A00535CD0 rcx=0000000000000000
rdx=0000000000000000 rsi=00000007FFFF8F10 rdi=0000000000000060
r8 =0000000000000000 r9 =0000000A0012EEA8 r10=0000000800000000
r11=00000003FF76D542 r12=0000000000000000 r13=00006FFFFFDD0008
r14=00000007FFFF8FA0 r15=0000000100B7F110
rbp=00000001015C881F rsp=00000007FFFF8E20
program=D:\software\swoole-cli\bin\swoole-cli.exe, pid 354, thread main
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
0001015C881F 0001008C745A (000000000058, 0001015C881F, 0001015C87F0, 6FFFFFDD0008) swoole-cli.exe+0x4C745A
0001015C881F 0001008CED83 (000A00000012, 000000000226, 000A0052DEE8, 000000000000) swoole-cli.exe+0x4CED83
0001015C881F 00010090A9F4 (7FFDE0E60453, 000000000088, 000000002028, 000100911940) swoole-cli.exe+0x50A9F4
00010171FBA0 000100922BC9 (000100922940, 00000000000C, 6FFFFFE134C0, 6FFFFF601B78) swoole-cli.exe+0x522BC9
000000200308 0001009231A2 (000100B7F030, 000A003C49E0, 000100A6A343, 000A00416668) swoole-cli.exe+0x5231A2
000000200308 00010091AA75 (6FFFFFFB4710, 6FFFFFE132C0, 6FFFFFF04008, 6FFFFFE13350) swoole-cli.exe+0x51AA75
000000200308 0001008A4A4A (0007FFFF9320, 000000000003, 000000000008, 6FFFFFE13330) swoole-cli.exe+0x4A4A4A
000000200308 000100A4BA74 (0001017238E0, 6FFFFFE77D00, 0001009F00C6, 000000000000) swoole-cli.exe+0x64BA74
000000000000 000100A4DA72 (000700000008, 0007FFFFA630, 0007FFFFB8B0, 0007FFFFCC38) swoole-cli.exe+0x64DA72
0007FFFF9320 0001009E2A2B (0001009CA40D, 000000000000, 000000000000, 0007FFFFB810) swoole-cli.exe+0x5E2A2B
0007FFFFA380 00010097E3E3 (00010097C6F0, 000100BBCEE8, 00010097C6E0, 000700000000) swoole-cli.exe+0x57E3E3
000000000000 000100AC434D (0007FFFFCC30, 000000000025, 0000FF52424B, 0007FFFFCA84) swoole-cli.exe+0x6C434D
000000000000 000100BDD758 (0007FFFFCC30, 000000000000, 7FFD301A8035, 0007FFFFCC50) swoole-cli.exe+0x7DD758
0007FFFFCD30 7FFD301A80A1 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x80A1
0007FFFFFFF0 7FFD301A5C86 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x5C86
0007FFFFFFF0 7FFD301A5D34 (000000000000, 000000000000, 000000000000, 000000000000) cygwin1.dll+0x5D34
End of stack trace
Loaded modules:
000100400000 swoole-cli.exe
7FFDE0E50000 ntdll.dll
7FFDDF570000 KERNEL32.DLL
7FFDDE170000 KERNELBASE.dll
0003F3540000 cygbrotlienc-1.dll
0003F38F0000 cygMagickWand-7.Q16HDRI-7.dll
0003F3A30000 cygMagickCore-7.Q16HDRI-7.dll
0003FFE60000 cygbrotlidec-1.dll
7FFDDF190000 ADVAPI32.dll
7FFDE05C0000 msvcrt.dll
0003F33C0000 cygcares-2.dll
0003FFB60000 cygcrypto-1.1.dll
7FFDDF410000 sechost.dll
0003FFE40000 cygbz2-1.dll
7FFDDE520000 bcrypt.dll
7FFDDEB80000 RPCRT4.dll
0003FFAB0000 cygcurl-4.dll
7FFDE03D0000 GDI32.dll
7FFD301A0000 cygwin1.dll
0003F41C0000 cygexslt-0.dll
7FFDDE550000 win32u.dll
7FFDDE580000 gdi32full.dll
7FFDDE7C0000 msvcp_win.dll
0003F2980000 cygfreetype-6.dll
0003FF580000 cyggmp-10.dll
0003F23D0000 cygiconv-2.dll
7FFDDE6A0000 ucrtbase.dll
7FFDDEF30000 USER32.dll
0003F20F0000 cygicui18n72.dll
0003FF4F0000 cygicuio72.dll
0003F1F30000 cygicuuc72.dll
0003EEAE0000 cygjpeg-8.dll
0003EE7B0000 cygonig-5.dll
0003EE570000 cygpng16-16.dll
0003FE600000 cygreadline7.dll
0003F5940000 cygsqlite3-0.dll
0003FE470000 cygssl-1.1.dll
0003FDF20000 cygxml2-2.dll
0003F4180000 cygxslt-1.dll
0003EDC80000 cygyaml-0-2.dll
0003FDF00000 cygz.dll
0003ED690000 cygzip-5.dll
0003FF760000 cyggcc_s-seh-1.dll
0003FF540000 cyggomp-1.dll
0003FE290000 cygstdc++-6.dll
0003F37B0000 cygX11-6.dll
0003FFE80000 cygbrotlicommon-1.dll
0003F3730000 cygXext-6.dll
0003F3420000 cygcairo-2.dll
0003F3380000 cygcgraph-6.dll
0003F3160000 cygdjvulibre-21.dll
0003F2F20000 cygfftw3-3.dll
0003F2B80000 cygfontconfig-1.dll
0003F2AE0000 cygfpx-1.dll
0003F2590000 cygglib-2.0-0.dll
0003F2520000 cyggobject-2.0-0.dll
0003EC0E0000 cyggs-9.dll
0003F0E70000 cyggvc-6.dll
0003EEBA0000 cygjbig-2.dll
0003EEA80000 cyglcms2-2.dll
0003EEA60000 cyglqr-1-0.dll
0003FED10000 cyglzma-5.dll
0003EE700000 cygpango-1.0-0.dll
0003EE6E0000 cygpangocairo-1.0-0.dll
0003EE240000 cygraqm-0.dll
0003EE060000 cygraw_r-16.dll
0003EE020000 cygrsvg-2-2.dll
0003EDE10000 cygtiff-6.dll
0003EDD80000 cygwebp-7.dll
0003EDD30000 cygwebpdemux-2.dll
0003EDD10000 cygwebpmux-3.dll
0003FF730000 cyggsasl-18.dll
0003FF4A0000 cyggssapi_krb5-2.dll
0003FEF80000 cyglber-2.dll
0003FE750000 cygidn2-0.dll
0003FEE60000 cygldap-2.dll
0003FE710000 cygnghttp2-14.dll
0003FE6B0000 cygpsl-5.dll
0003FDE50000 cygzstd-1.dll
0003FF640000 cyggcrypt-20.dll
0003FE500000 cygssh2-1.dll
0003EA300000 cygicudata72.dll
0003FE9B0000 cygncursesw-10.dll
0003ED720000 cygcrypto-1.0.0.dll
0003EDCE0000 cygxcb-1.dll
0003EDCC0000 cygxcb-render-0.dll
0003EE5D0000 cygpixman-1-0.dll
0003F3670000 cygXrender-1.dll
0003EDCB0000 cygxcb-shm-0.dll
0003F33A0000 cygcdt-5.dll
0003FF810000 cygexpat-1.dll
0003FF2E0000 cygintl-8.dll
0003FE0A0000 cyguuid-1.dll
0003FE7B0000 cygpcre-1.dll
0003EE680000 cygpathplan-4.dll
0003FF7A0000 cygffi-6.dll
0003F3FE0000 cygltdl-7.dll
0003F3610000 cygXt-6.dll
0003FF370000 cygidn-12.dll
0003EE6A0000 cygpaper-1.dll
0003F5E50000 cygtiff-7.dll
0003EDE90000 cygthai-0.dll
0003EE6C0000 cygpangoft2-1.0-0.dll
0003F2960000 cygfribidi-0.dll
0003F5ED0000 cygharfbuzz-0.dll
0003EEBC0000 cygjasper-4.dll
0003F3330000 cygcroco-0.6-3.dll
0003F2820000 cyggdk_pixbuf-2.0-0.dll
0003F2690000 cyggio-2.0-0.dll
0003F3300000 cygdeflate-0.dll
0003FEDB0000 cygsharpyuv-0.dll
0003FF0D0000 cygk5crypto-3.dll
0003FE960000 cygntlm-0.dll
0003FF000000 cygkrb5-3.dll
0003FEFE0000 cygkrb5support-0.dll
0003FFE30000 cygcom_err-2.dll
0003F1AF0000 cygunistring-5.dll
0003FE590000 cygsasl2-3.dll
0003FF510000 cyggpg-error-0.dll
0003F37A0000 cygXau-6.dll
0003F3750000 cygXdmcp-6.dll
0003F3ED0000 cygICE-6.dll
0003F38E0000 cygSM-6.dll
0003F3320000 cygdatrie-1.dll
0003F24F0000 cyggraphite2-3.dll
0003F2580000 cyggmodule-2.0-0.dll
7FFDDD8A0000 CRYPTBASE.DLL
7FFDDE9D0000 bcryptPrimitives.dll
7FFDDF530000 IMM32.DLL
7FFDD5290000 netapi32.dll
7FFDD5270000 SAMCLI.DLL
7FFDD96A0000 SAMLIB.dll
7FFDDCBD0000 NETUTILS.DLL
7FFDDCD50000 authz.dll
7FFDDCBE0000 iphlpapi.dll
7FFDDCC10000 DNSAPI.dll
7FFDE03C0000 NSI.dll
7FFDD8360000 dhcpcsvc6.DLL
7FFDD8380000 dhcpcsvc.DLL
7FFDDB630000 WINNSI.DLL
7FFDDECA0000 ws2_32.dll
7FFDDD650000 mswsock.dll