Здравствуйте, реализую примитивный Long Polling API. Столкнулся с проблемой.
Мой код выглядит следующим образом:
$timeEnd = Carbon::now()->addSeconds(30);
do {
$payments = Payment::whereStatus(1)->get();
if ($payments->count() == 0) {
sleep(1);
}
} while ($payments->count() == 0 && Carbon::now()->lte($timeEnd));
return $payments;
Я хочу в реальном времени получать платежи со статусом 1. Казалось бы, чисто логически код верный. Однако на практике, такое чувство, одинаковые запросы к базе кэшируются и не обновляются.
Я запускал этот код. После запуска вручную изменял статус платежа, но сервер его не возвращал. Т.е. если в момент обработки запроса физически изменить значение в БД, сервер не вернет нужную модель.
При повторной отправке запроса возвращался данный платеж без каких-либо проблем.
Подскажите, с чем может быть связана проблема?