Всякий раз, когда мое приложение запускает php artisan schedule:run
и успешно планирует некоторые задания в любой из моих очередей, оно создает для себя запись кэша в следующем формате:
laravel:framework/schedule-{SCHEDULE_HASH}
, где SCHEDULE_HASH
- это случайное значение 32символьная строка, я бы понял, если бы этот ключ кеша содержал какие-то значимые данные, но он всегда содержит b:1;
в качестве значения.
Какова цель этого значения кеша?Насколько я знаю, как только закончится вызов по расписанию, нам все равно, что произошло, так как мой исполнитель процессов настроен на повторный запуск через 60 секунд, чтобы посмотреть, нужно ли запланировать какие-либо новые задания.
В настоящее время это спам в моем кэше redis с сотнями ключей, и я хотел бы разрешить его, если это возможно.
Единственное, что я могу подумать, это то, что когда запускается schedule:run
, тогда Running scheduled command: '/usr/local/bin/php' artisan job:name > '/dev/null' 2?&1
возможно, вторая половина каким-то образом использует Redis в качестве места назначения для хранения, а затем отправляет туда новое значение кэша 1, любоеСправка будет принята с благодарностью.
ОБНОВЛЕНИЕ: Мне интересно, действительно ли то, что я вижу, является мьютексом кеша https://laravel.com/api/5.5/Illuminate/Console/Scheduling/Mutex.html, поскольку я использую функцию onOneServer
.Единственное, что даже после завершения моей работы мьютекс не освобождается.
Запланированное задание:
$schedule->command('shop:calculate_remaining_work', [$shop->id])
->cron('*/5 * * * *') // per 5 minutes
->onOneServer()
->withoutOverlapping();
Я ожидаю, что мьютекс будет освобожден после завершения выполнения команды, ноэто не так, мьютекс остается в кеше в течение полных 1440 минут