@Muvka

Лучше разобраться с cron или силами одного PHP?

Здравствуйте. Есть такая задача. Каждую пятницу и до воскресенья мне нужно в одной категории автоматом устанавливать скидки на товары. В воскресенье, соответственно, скидки должны пропадать. У меня такой вопрос, насколько плох или хорош мой вариант, без использования cron(не имел дел, надеюсь правильно понимаю, что он позволяет сделать). Так вот, у товаров я создаю доп поле для цены со скидкой, которая должна устанавливаться в нужное мне время. Затем первый пользователь, который зайдет в пятницу, запустит скрипт, который применит эту цену в sale_price и запишет в транзиентный кэш(который в бд) инфу, что мол цены установлены и больше не нужно этого делать, на 2 дня. И, соотвественно, в воскресенье будет то же самое, только цены удалятся из sale_price и запишется другая инфа, что не нужно больше удалять скидку. Надеюсь понятно изложил свою мысль)
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Веб-разработка
software engineer
Ваш план плохо масштабируется - в вопросе неизвестно сколько будет выполняться ваш запрос, и будут ли тормоза у пользователя. И что будет через месяц, через год, если товаров станет больше.

В то время как крон вы можете поставить в то время, когда не выполняются бэкапы, когда на сервере минимальная активность, и выполнение может быть контролируемым, с логированием, с расширенным функционалом.

Сама идея обновлять данные при активности какого-либо пользователя - вполне нормальная, просто не для вашего случая. Она для случая, когда нужно обновлять небольшой блок данных.

P.S. А разобраться с крон в любом случае необходимо - это стандартный и популярный инструмент. Разобравшись с крон вы будете лучше понимать когда его использовать, а когда нет, а не отталкиваться от того, тут же разбираться надо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Ваш план, простите, говно. Либо крон, либо храните в базе дату и время действия скидки и проверяйте ее оттуда
Ответ написан
Комментировать
sandu2d
@sandu2d
Человек
Легко можно сделать что-то такое и значения для $discountDays брать из БД:
<?php

$discountDays = ['Friday', 'Saturday', 'Sunday'];

function isDiscountDay(array $discountDays): bool
{
    return in_array(date('l'), $discountDays);
}
Ответ написан
@ipokos
А что если у вас товар "А", есть в категории для скидок и в обычной категории, а вы цену обновили в БД?
Оба варианта мне не нравятся. Но из двух предложенных вариантов, менее плохой с кроном. Разобраться с кроном и настроить его займет часа пол.
Ответ написан
Комментировать
Если скидки одинаковы для всех товаров, тогда может есть смысл сделать скидку в корзине на все товары этой категории и инициировать ее только по выходным, а на сайте выкидывать сообщение, что сегодня скидка на товары такой категории

Тогда, крон не нужен, в базе ничего не меняется, список категорий масштабируется, список скидок для категорий масштабируется.

Как такая идея?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы