Небольшое исправление LongPoll

This commit is contained in:
Arsen Mirzaev Tatyano-Muradovich 2021-07-28 17:50:27 +10:00
parent 2f9352fb13
commit d307d4220e
2 changed files with 30 additions and 11 deletions

View File

@ -63,16 +63,35 @@ final class longpoll
// Инициализация // Инициализация
if (empty($robot->id)) throw new Exception('Необходимо указать идентификатор ВКонтакте'); if (empty($robot->id)) throw new Exception('Необходимо указать идентификатор ВКонтакте');
if (empty($robot->key)) throw new Exception('Необходимо указать ключ для доступа к LongPoll'); 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)) { try {
// Если не существует каталога temp, то создать // Поиск директории для временных файлов
mkdir(core::init()->path_temp, 0775, true); if (!file_exists(core::init()->path_temp)) {
} // Не удалось найти директорию для временных файлов
if (file_exists($lock = core::init()->path_temp . '/' . $this->robot->id . '_' . (int) $this->robot->session . '.longpoll')) {
// Если существует файл-блокировщик, то удалить его if (!mkdir(core::init()->path_temp, 0775, true)) {
unlink($lock); // Не удалось создать директорию для временных файлов
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 public function get(int $wait = 25): array
{ {
if (empty($this->key) || empty($this->server) || empty($this->ts)) { if (empty($this->key) || empty($this->server) || empty($this->ts)) {
// Если не инициализирован LongPoll-сервер // LongPoll-сервер не инициализирован
// Запрос на получение доступа и данных LongPoll-сервера // Запрос на получение доступа и данных LongPoll-сервера
$response = json_decode($this->robot->browser->request(method: 'POST', uri: 'groups.getLongPollServer', options: [ $response = json_decode($this->robot->browser->request(method: 'POST', uri: 'groups.getLongPollServer', options: [
@ -190,7 +209,8 @@ final class longpoll
if (isset($response->error)) { if (isset($response->error)) {
// Что-то сделать // Что-то сделать
var_export($response->error); die; var_export($response->error);
die;
} }
// Инициализация // Инициализация

View File

@ -1 +0,0 @@
9104