2012-04-05 4 views
1

Извините, если это дублированный вопрос ... Я обыскал и нашел похожие советы, но ничего не помогло решить мою точную проблему. И, пожалуйста, извините вопросы Noob, CRON - это новая вещь для меня.codeigniter cron job with http access

У меня есть скрипт codeigniter, который сбрасывает html DOM другого сайта и сохраняет некоторые из них в базе данных. Я хотел бы запустить этот скрипт с регулярным интервалом. Это привело меня к поиску работы cron.

На странице у меня есть на myserver.com/index.php/update

Я понимаю, что я могу запустить хроны с завитком и запустить эту страницу. Если я хочу, чтобы быть немного более безопасным, я могу поместить строку в конце, как:

myserver.com/index.php/update/asdfh2784fufds

И проверить, что в моем контроллере CI.

Кажется, что это было бы в основном безопасным, но не похоже на «правильный» способ сделать что-то.

Я посмотрел в CI работает из командной строки, и может выполнять основные страницы, как:

PHP index.php mycontroller

Но когда я пытаюсь сделать:

индекс PHP. php update

Не работает. Я подозреваю, что это связано с тем, что для очистки DOM внешней страницы необходимо использовать HTTP.

Итак, мой вопрос:

Как безопасно запустить CodeIgniter сценарий с хрон работу, которая нуждается в доступе HTTP?

+1

Возможно, это поможет вам http: // codeigniter.com/wiki/Категория: Продвинутый :: CronScript –

ответ

0

У вас есть пара вариантов. Проще всего было бы убедиться, что ваш скрипт гарантирует, что $_SERVER['REMOTE_ADDR'] будет проходить с той же машины перед выполнением.

Другой вариант - использовать https и использовать проверку подлинности с помощью wget или curl.

+0

Ну, я никогда не получал свой сценарий для запуска по стандартной командной строке ... но используя CURL и проверяя $ _SERVER ['REMOTE_ADDR'] против локального адреса, длинная строка URL должна быть достаточной для моих целей. Спасибо за предложение! – user1313850

0

Что именно случилось? Что это за ошибка?

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

что-то вроде

php /path/to/ci_folder/index.php update 

Также на контроллере вы можете добавить.

if ($this->input->is_cli_request()) 
    // run the script 
else 
    // echo some message saying not allowed. 

Это запустит то, что необходимо, только если скрипт php запущен в командной строке.

Надеюсь, что это помогло.