diff --git a/mirzaev/vk/system/api/longpoll.php b/mirzaev/vk/system/api/longpoll.php index e41ac4c..b6466d6 100644 --- a/mirzaev/vk/system/api/longpoll.php +++ b/mirzaev/vk/system/api/longpoll.php @@ -63,16 +63,35 @@ final class longpoll // Инициализация if (empty($robot->id)) throw new Exception('Необходимо указать идентификатор ВКонтакте'); if (empty($robot->key)) throw new Exception('Необходимо указать ключ для доступа к LongPoll'); - if (empty($robot->api['v'])) throw new Exception('Необходимо указать версию используемого API ВКонтакте'); + if (empty($robot->api) || empty($robot->api['v'])) { + // Настройки API не инициализированы или не соблюдены условия + + // Безопасная инициализация + $robot->api->init(); + } // Остановка процессов-дубликатов - if (!file_exists(core::init()->path_temp)) { - // Если не существует каталога temp, то создать - mkdir(core::init()->path_temp, 0775, true); - } - if (file_exists($lock = core::init()->path_temp . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll')) { - // Если существует файл-блокировщик, то удалить его - unlink($lock); + try { + // Поиск директории для временных файлов + if (!file_exists(core::init()->path_temp)) { + // Не удалось найти директорию для временных файлов + + if (!mkdir(core::init()->path_temp, 0775, true)) { + // Не удалось создать директорию для временных файлов + + throw new Exception('Не удалось создать директорию для временных файлов', 500); + } + } + + // Поиск файла-блокировщика + if (file_exists($lock = core::init()->path_temp . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll')) { + // Удалось найти файл-блокировщик + + // Удаление файла + unlink($lock); + } + } catch (Exception $e) { + throw new Exception('Не удалось обработать процессы-дубликаты', 500, $e->getPrevious()); } } @@ -180,7 +199,7 @@ final class longpoll public function get(int $wait = 25): array { if (empty($this->key) || empty($this->server) || empty($this->ts)) { - // Если не инициализирован LongPoll-сервер + // LongPoll-сервер не инициализирован // Запрос на получение доступа и данных LongPoll-сервера $response = json_decode($this->robot->browser->request(method: 'POST', uri: 'groups.getLongPollServer', options: [ @@ -190,7 +209,8 @@ final class longpoll if (isset($response->error)) { // Что-то сделать - var_export($response->error); die; + var_export($response->error); + die; } // Инициализация diff --git a/mirzaev/vk/temp/191417381_1.longpoll b/mirzaev/vk/temp/191417381_1.longpoll deleted file mode 100644 index c750cc8..0000000 --- a/mirzaev/vk/temp/191417381_1.longpoll +++ /dev/null @@ -1 +0,0 @@ -9104 \ No newline at end of file