new AMQPStreamConnection(
$_ENV["main_RABBIT_HOST"],
$_ENV["main_RABBIT_PORT"],
$_ENV["main_RABBIT_LOGIN"],
$_ENV["main_RABBIT_PASSWORD"],
$_ENV["main_RABBIT_VHOST"]
);
$channel = $connection->channel();
$channel->queue_declare($queue, false, true, false, false);
$callback = function ($msg) {
require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
Loader::includeModule('some.module');
require_once('functions.php');
$newTask = new SomeTask();
$newTask->worker_short($msg->body, getAppDir());
$msg->ack();
};
$channel->basic_qos(null, 10, null);
$channel->basic_consume($queue, '', false, false, false, false, $callback);
while ($channel->is_open()) {
$channel->wait();
}
$channel->close();
$connection->close();
...
в ходе обработки сообщений подцепляется ошибка 'mysql has gone away'. Причины 'mysql has gone away' на данный момент неизвестны, но потенциально понятно, что по причине подключения prolog_before.php.
Помогает в таком случае только перезагрузка mysql и перезапуск worker_message.php.
Что можно было бы сделать более корретно, чтобы исключить ошибку?
Ну ошибка исключительно мускулёвая, с количеством соединений нет проблем?
Обсуждают сегодня