Я читаю здесь: https://laravel.com/docs/5.3/queues#running-the-queue-worker
Я хотел создать задание cron с помощью учебника, но я не совсем понимаю, как его реализовать
Мой случай таков:
Например, у меня есть порядок столов. Порядок таблицы имеет следующие поля:
Статус, int (10)
checkout_at, datetime
cancelled_at, datetime
Я упоминаю только несколько полей
нота:
status = 1 -> Получено
status = 2 -> Отменено
status = 3 -> Waitng For Payment
Я хочу сделать логику так:
Если покупатель не оплатил заказ в течение 2 часов после checkout_at, измените статус на «отменен» и введите значение «cancelled_at»
Я создаю такую функцию:
public function cron_job()
{
$users = DB::table('orders')
->select('*')
->first();
$checkout_at = $users->checkout_at;
$after = strtotime("+2 hours", strtotime($checkout_at));
if($checkout_at > $after) {
DB::table('orders')
->where('id', $users->id)
->update(['status ' => 2, 'canceled_at' => date("Y-m-d H:i:s")]);
}
}
Как создать задание cron для вызова этой функции, реализовав приведенный выше учебник?
Для такого рода работы вы должны использовать Планирование задач Laravel. Это дает возможность выполнять скрипт каждый час (или любой другой интервал, который вы выберете).
$schedule->call(function () {
// Your code
})->hourly();
Однако вы должны иметь возможность добавить задание cron на сервер, где размещен ваш сайт.
Других решений пока нет …