diff --git a/examples/bot.php b/examples/bot.php index 67aa8aae..9c622fba 100755 --- a/examples/bot.php +++ b/examples/bot.php @@ -92,7 +92,7 @@ $settings = [ ], 'serialization' => [ 'serialization_interval' => 30, - ], + ] ]; $MadelineProto = new API('bot.madeline', $settings); diff --git a/src/danog/MadelineProto/Db/DriverArray.php b/src/danog/MadelineProto/Db/DriverArray.php index f3a0149b..3423e8bc 100644 --- a/src/danog/MadelineProto/Db/DriverArray.php +++ b/src/danog/MadelineProto/Db/DriverArray.php @@ -32,6 +32,7 @@ abstract class DriverArray implements DbArray } abstract public function initConnection($settings): \Generator; + abstract public function initStartup(): \Generator; /** * @param self $new diff --git a/src/danog/MadelineProto/Db/MemoryArray.php b/src/danog/MadelineProto/Db/MemoryArray.php index ab15956d..6de20692 100644 --- a/src/danog/MadelineProto/Db/MemoryArray.php +++ b/src/danog/MadelineProto/Db/MemoryArray.php @@ -35,7 +35,7 @@ class MemoryArray extends \ArrayIterator implements DbArray if ($value instanceof DbArray) { Logger::log("Loading database to memory. Please wait.", Logger::WARNING); if ($value instanceof DriverArray) { - yield from $value->initConnection($value->dbSettings); + yield from $value->initStartup(); } $value = yield $value->getArrayCopy(); } diff --git a/src/danog/MadelineProto/Db/RedisArray.php b/src/danog/MadelineProto/Db/RedisArray.php index 74197702..86324aae 100644 --- a/src/danog/MadelineProto/Db/RedisArray.php +++ b/src/danog/MadelineProto/Db/RedisArray.php @@ -16,7 +16,7 @@ use function Amp\call; class RedisArray extends SqlArray { protected string $table; - public DatabaseRedis $dbSettings; + protected DatabaseRedis $dbSettings; private RedisRedis $db; // Legacy @@ -56,6 +56,7 @@ class RedisArray extends SqlArray } } + public function __sleep() { return ['table', 'dbSettings']; diff --git a/src/danog/MadelineProto/Db/SqlArray.php b/src/danog/MadelineProto/Db/SqlArray.php index 0b191b4d..b3dc4259 100644 --- a/src/danog/MadelineProto/Db/SqlArray.php +++ b/src/danog/MadelineProto/Db/SqlArray.php @@ -19,6 +19,16 @@ abstract class SqlArray extends DriverArray abstract protected function renameTable(string $from, string $to): \Generator; + /** + * Initialize on startup. + * + * @return \Generator + */ + public function initStartup(): \Generator + { + return $this->initConnection($this->dbSettings); + } + /** * @param string $name * @param DbArray|array|null $value @@ -49,7 +59,7 @@ abstract class SqlArray extends DriverArray // Skip migrations if its same object if ($instance !== $value) { if ($value instanceof DriverArray) { - yield from $value->initConnection($value->dbSettings); + yield from $value->initStartup(); } yield from static::renameTmpTable($instance, $value); yield from static::migrateDataToDb($instance, $value); diff --git a/src/danog/MadelineProto/Serialization.php b/src/danog/MadelineProto/Serialization.php index b7ed5af8..f4fd053e 100644 --- a/src/danog/MadelineProto/Serialization.php +++ b/src/danog/MadelineProto/Serialization.php @@ -194,7 +194,7 @@ abstract class Serialization $unserialized = yield from $session->unserialize(); if ($unserialized instanceof DriverArray) { Logger::log("Extracting session from database..."); - yield from $unserialized->initConnection($unserialized->dbSettings); + yield from $unserialized->initStartup(); $unserialized = yield $unserialized['data']; if (!$unserialized) { throw new Exception("Could not extract session from database!"); diff --git a/src/danog/MadelineProto/Settings/Ipc.php b/src/danog/MadelineProto/Settings/Ipc.php index a2b825ee..55853955 100644 --- a/src/danog/MadelineProto/Settings/Ipc.php +++ b/src/danog/MadelineProto/Settings/Ipc.php @@ -29,7 +29,7 @@ class Ipc extends SettingsAbstract /** * Whether to force full deserialization of instance, without using the IPC server/client. - * + * * WARNING: this will cause slow startup if enabled. * * @param bool $slow WARNING: this will cause slow startup if enabled.