У меня есть небольшая таблица поддавки, и мне нужны cronjobs в MySQL, чтобы сделать ее автоматической.
таблица giveaways_participants
Здесь ваш идентификатор пользователя добавляется, когда вы участвуете в раздаче.
id | user_id | giveaway_id
__________________________
1 | 1 | 4
2 | 67 | 39
таблица раздачи
Все доступные распродажи
id | user_id | contents | expires
__________________________
1 | 1 | 4,189,45,7 | 1512484213
2 | 67 | 39 | 1512484213
3 | 67 | 8,2,645 | 1512484213
таблица инвентаря
Ресурсы пользователей
id | user_id | item_id
__________________________
1 | 1 | 4
2 | 67 | 2
3 | 67 | 7
Я хочу, чтобы cronjob ежедневно проходил giveaways
, срок действия которой истек (закончился), выберите случайного победителя из giveaways_participants
для этой конкретной поддавки и вставьте contents
из giveaways
в inventory
в качестве новой строки для каждого элемента, разделенного запятой для этого пользователя.
Как это можно достичь самым эффективным способом?
Я бы просто создал php-страницу (если это возможно для вас), которую можно вызвать из crontab, например php dailyga.php.
Что будет на этой странице? Выберите из таблицы раздачи, данные которой только что истекли и выбрали идентификатор. Затем выберите все идентификаторы от ваших пользователей и выберите случайный вариант, затем вставьте в инвентарь этот идентификатор пользователя и идентификатор раздачи.
Установка задания cron на каждое утро выполняла бы работу (или в полночь и т.д.).
Как выбрать только просроченную распродажу? Просто выберите те, срок которых истекает в прошлом (даже минута), но самый младший - или тот, для которого нет записи в таблице инвентаря.
Надеюсь, я немного помог.