Использование системы очередей для обработки заданий. Мы запускаем cron один раз каждое утро в 1:00, и он публикует все наши необходимые вызовы API. У нас есть другой потребительский cron, который запускается каждые пять минут и обращается к запросам в очереди.
Мы находимся в общей среде, и сценарии, вызываемые через cron, завершаются через 15 минут. Поэтому, чтобы защитить себя, мы грациозно завершаем наш сценарий через 9 минут.
Почти все наши вызовы API выполняются, за исключением (2), который мы пытаемся выяснить, почему. Когда мы запускаем их вручную через один и тот же скрипт, они работают отлично. Странный. Сбой только при запуске через cron со всеми другими запросами.
В любом случае ночные журналы показывают следующую фатальную ошибку, возникающую несколько раз. Может быть, это виновник. Невозможно определить, что является причиной этого. Если я вручную уничтожаю соединения AMQP, я получаю другую ошибку, поэтому я знаю, что $ ch и $ conn не переопределяются где-то в одном из вызовов API.
Неустранимая ошибка: вызов функции-члена basic_get () для ресурса в /........../consume_requests.php в строке 116
Ниже приведена наша инициализация phpamqplib. Любая помощь будет оценена.
require '/vendors/php-amqplib/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
try {
$queue = 'my_queue';
$url = parse_url(URL);
$conn = new AMQPStreamConnection(HOST, 5555, USER, PASS, PATH, 1));
$ch = $conn->channel();
$ch->queue_declare($queue, false, true, false, false);
$ch->exchange_declare(EXCHANGE, 'direct', true, true, false);
$ch->queue_bind($queue, EXCHANGE,$queue);
} catch(Exception $e) {
echo $e->getMessage();
}
while($message_receipt = $ch->basic_get($queue)) { //line 116