2015-01-08 3 views
0

Я хочу создать планировщик в Codeigniter как в, в 21:24 «эта» запись должна быть обновлена.Codeigniter - создание ручного планировщика

Я много искал, но окончательным ответом было создание задания cron.

Могу ли я динамически создавать работу cron в Codeigniter?

На самом деле я думал, чтобы создать класс, в котором метод будет держать проверку:

  1. времени.
  2. Все, что нужно обновить.

Как создать такую ​​функцию наиболее эффективно, поскольку запрос может исходить от n количества пользователей в случайные моменты времени для выполнения определенной работы в разное время?

+0

Могу ли я предложить сохранить это из нормальной функциональности веб-сервера, написать отдельный исполняемый файл, который обрабатывает тонкости вашего планировщика и добавляет его в cron с периодом 1 минута или около того? –

+0

Да, это так, как я должен думать об этом .. спасибо Robert .. :) – user3273860

ответ

1

Я бы не стал динамически создавать задания cron.

Вместо этого у меня будет один скрипт, который вызывается через cron один раз в минуту (один раз каждые 10 минут ...) и сохраняет все задания в базе данных с момента их запуска.

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

+0

Если я использую это решение, мне нужно проверять мою базу данных каждые 10 секунд (в будущем это может даже уменьшиться). Теперь, если количество заданий увеличивается, чтобы сделать это в определенное время, (скажем, потребовалось больше 10 секунд), как это повлияет на следующий триггер? .. Если это звучит, мне нужно более четко узнать мои основы, пожалуйста, позвольте мне знаю .. :) – user3273860

+0

Могу ли я использовать EvTimer в моем случае? на самом деле я пробовал для EvTimerbut получил некоторые проблемы с установкой – user3273860

0

Для создания задания CRON из PHP используйте команду exec. Это должно работать (непроверенные, на мобильном телефоне)

exec(crontab -l | { cat; echo "0 0 0 0 0 php your_php_script.php"; } | crontab -); 

В качестве альтернативы, если вы хотите запланировать одно задание лучше нас «в» команды.

+0

будет ли он работать в любой форме? – user3273860

+0

No thats * nix только. Вы должны иметь возможность использовать функцию php exec() для планирования задания, используя версию windows cron. Неверный синтаксис в строке cmd, но вы можете посмотреть в планировщик заданий. Windows также имеет версию 'at' –