This commit is contained in:
2021-08-16 18:18:35 +08:00
parent 37a43ef66e
commit 9d78dc9e48
+10 -2
View File
@@ -4,7 +4,9 @@ namespace Database\Mysql;
use Exception;
use HttpServer\Http\Context;
use Kiri\Events\EventProvider;
use PDOStatement;
use Server\Events\OnWorkerExit;
use Swoole\Timer;
class PDO
@@ -19,6 +21,8 @@ class PDO
private int $_transaction = 0;
private EventProvider $eventProvider;
private int $_timer = -1;
private int $_last = 0;
@@ -35,6 +39,9 @@ class PDO
public string $username, public string $password, public string $chatset = 'utf8mb4')
{
$this->heartbeat_check();
$this->eventProvider = di(EventProvider::class);
$this->eventProvider->on(OnWorkerExit::class, [$this, 'stopHeartbeatCheck']);
}
@@ -57,9 +64,11 @@ class PDO
try {
if (time() - $this->_last > 10 * 60) {
$this->stopHeartbeatCheck();
$this->pdo = null;
}
if (!$this->_pdo()->getAttribute(\PDO::ATTR_SERVER_INFO)) {
$this->stopHeartbeatCheck();
$this->pdo = null;
}
} catch (\Throwable $throwable) {
error($throwable);
@@ -70,11 +79,10 @@ class PDO
/**
*
*
*/
public function stopHeartbeatCheck(): void
{
$this->pdo = null;
if (Context::inCoroutine()) {
Timer::clear($this->_timer);
}