@santavits

Как работать с php и cron?

Ситуация такая

К примеру есть свой сервис
Как можно сделать чтобы пользователи могли добавлять свои задачи, задачи должны запускаться с помощью php скрипта в указанное время, время указывает сам пользователь, пускай будет каждые 10 минут
В задаче пользователь указывает свои данные, которые должны быть применены в скрипте
Ну я пока додумался только до того, что php скрипт ставлю на выполнение каждую минуту, данные пользователей будут браться с базы данных
Вот мучает только 2 вопроса
1)Что будет если несколько пользователей укажут одно и тоже время
К примеру 3 пользователя укажут время выполнение задачи каждые 10 минут
Ведь скрипт возьмёт данные только одного пользователя либо вообще выдаст ошибку
2)Как подставлять данные пользователей?
Чтобы скрипт выполнил задачу именно того пользователя
Точнее как в запросе к БД указать id пользователя
Select * From 'table' Where 'id' =???

Буду благодарен за любую помощь
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 2
megafax
@megafax
web-программист
У Вас должен быть тогда задачник, который, к примеру, запускается каждую минуту, проверяет нужные ему задачи, и, если их несколько, запускает их все.
Все это делается через CRON в случае с PHP.
НО по крону запускается только Ваш скрипт, который уже смотрит нужные ему задачи, а не скрипты Ваших пользователей
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * 
  FROM `tasks` 
  WHERE `nextStartTime` < :currentTime;

Выбираете все строки, запускаете задачи.
Дальше либо задача удаляется, если разовая, либо обновляется время следующего запуска
DELETE 
  FROM `tasks` 
  WHERE `nextStartTime` < :currentTime AND 0 = `interval`;
UPDATE `tasks` 
  SET `nextStartTime` = `nextStartTime` + INTERVAL `interval` MINUTE 
  WHERE `nextStartTime` < :currentTime;
Ответ написан
Ваш ответ на вопрос

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

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