From d307d4220eedfa13e4d04a2ba6655c37e7c4e9f9 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Wed, 28 Jul 2021 17:50:27 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B5=D0=B1=D0=BE=D0=BB=D1=8C=D1=88?= =?UTF-8?q?=D0=BE=D0=B5=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20LongPoll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mirzaev/vk/system/api/longpoll.php | 40 +++++++++++++++++++++------- mirzaev/vk/temp/191417381_1.longpoll | 1 - 2 files changed, 30 insertions(+), 11 deletions(-) delete mode 100644 mirzaev/vk/temp/191417381_1.longpoll 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