Я не думаю, что навсегда повторяющиеся сценарии, как правило, являются хорошей идеей.
Я просто создать один вечно повторяющуюся работу
Это почти никогда не является хорошей идеей. Он имеет свои приложения в устаревших кодах, но для этой работы лучше всего использовать веб-узлы и события. Кроме того, у вас есть преимущество использования очень хорошую основу, как Laravel, поэтому воспользоваться ею
WebSockets
Если вы хотите, чтобы люди были уведомлены в режиме реального времени в браузере.
Если у вас есть все ваши пользователи, подписаться на канал веб-канала при загрузке страницы, вы можете легко отправить сообщение на сервер веб-сервера всем подписчикам (например, браузерам), чтобы сообщить им, кто победитель.
Затем, в вашем клиентском коде (Javascript), вы можете проанализировать это сообщение, чтобы определить, кто победитель, и отобразить всплывающее окно, которое позволит пользователю узнать.
События
Если вы не возражаете, немного задержки, наиболее определенно использовать события для этого.
В конце каждого действия, которое потенциально может привести к лотерее (например, имя выбрано наугад компьютером - function chooseName()
). Огоньте событие, которое уведомляет всех участников розыгрыша. https://laravel.com/docs/5.2/events
NB: Я перечислил вышеупомянутые два как отдельные проблемы, но на самом деле их можно использовать вместе. Например, в случае , которое выбрано имя случайным образом, определить, является ли лотерейный закончена, и уведомить клиентов с помощью WebSocket соединению.
Почему бы не использовать задерживается Работа
Суть причины - ремонтопригодность
Представьте себе ситуацию, когда что-то проходит время вашего розыгрыша на неделю. Это могло произойти из-за того, что лотерея была обманута или что-то в этом роде (не может действительно думать обо всех случаях использования в этой области).
Теперь ваша работа имеет установленную задержку на месте - действительно ли это хороший принцип программирования, чтобы изменить две вещи, когда изменился только один сценарий? Неа.Имея что-то вроде события на месте - onRaffleEnd
- явно ищет событие. Ларавелу все равно, когда произойдет это событие.
Использование отложенных заданий может работать - это просто не очень хороший вариант использования в вашем сценарии и ограничивает то, что вы можете сделать в долгосрочной перспективе. Это заставит вас делать больше соображений, когда возникают непредвиденные обстоятельства, а также когда вы хотите изменить ситуацию. Это также децентрализует логику, связанную с вашей лотереей. Хотя развязывающий код - это хорошая практика, логика сидит в совершенно разных местах, делает обслуживание кошмаром.
Я голосовал, если только для выключателя языка. «Laravel Raffle» ... что бы это ни было, у него будет отличное название программы :) –