PHP NATS Client отключается через некоторое время простоя
Я использовал эту библиотеку Repejota / phpnats для разработки клиента NATS, который может подписаться на определенный канал. Но после подключения, получения нескольких сообщений и простоя в течение 30 секунд, он отключается без перерыва. Однако мой клиент Node.js хорошо работает с тем же сервером NATS.
Вот как я подписываюсь...
$c->subscribe(
'foo',
function ($message) {
echo $message->getBody();
}
);
$c->wait();
Любые предложения / помощь???
Спасибо!
0 ответов
Был ли это просто тайм-аут PHP по умолчанию, убивающий его? Может быть, примерно так:
ini_set('max_execution_time', 180); // gives about 3 minutes for example
$options = new ConnectionOptions();
$options->setHost('127.0.0.1')->setPort(4222);
$client = new Connection($options);
$client->connect(-1);
Вам нужно установить параметры подключения как -1
По умолчанию сценарии PHP не могут жить вечно, поскольку PHP следует рассматривать как апатрид. Это сделано намеренно, и по умолчанию продолжительность жизни составляет 30 секунд (хостеры обычно увеличивают это время до 180 секунд, но на самом деле это не имеет значения). Вы можете продлить это время самостоятельно, установивmax_execution_time
на любое значение (с 0
означает "навсегда"), но это не рекомендуется, если вы не знаете, что хотите этого. Если нет, то обычно используемый подход состоит в том, чтобы заставить скрипт вызывать сам себя (то есть через запрос GET), часто передавая некоторые параметры, чтобы позволить запущенному скрипту возобновить работу с того момента, когда вызывающий завершил работу.