Запустить задание Cron на контроллере CodeIgniter, который требует, чтобы я вошел в систему? Должен ли я использовать публичную / частную функцию в такой ситуации?

Я хочу запускать URL-адрес каждый день в 13:00, который проверяет, были ли изменены некоторые переменные, запустив запрос по внешнему API, а если изменился — сохраните новые переменные и уведомите меня по электронной почте.

Рабочая среда:

  • Я использую CodeIgniter MVC Framework.

  • Ubuntu Server 15.10.

Больше информации о ситуации:

  • Контроллер function cron_job() установлен на public, хотя я не уверен, что это безопасно и актуально для публичности, так как это специальная функция, которую должен запускать только сервер.

публичная функция cron_job () {

// проверяет vars и отправляет обновленные сообщения по электронной почте.

}

  • Функция написана на контроллере, который позволяет вам запускать его, только если у вас есть сеанс logged_in. Сессия logged_in создается с использованием зашифрованной функции, которую предлагает CodeIgniter. Который довольно крутой и простой в использовании. и безопасно. Так что, если я хочу запустить это, мне нужно как-то добавить сеанс перед запуском cron_job() функция. (Создайте новую частную функцию, которая добавляет сеанс и вызывает cron_job() функционировать? Я действительно не уверен, что это правильно делать)

что-то вроде этого?

приватная функция add_session () {

$ date = array (

’email’ => $ email, // ??? ‘is_logged_in’ => TRUE

);

$ This-> cron_job ();

}

мне даже разрешено запускать приватную функцию с сервера?

или я могу вставить переменную сеанса, используя зашифрованную функциональность CI, и сделать это легко вместе с функциональностью задания cron моего сервера Ubuntu?

1

Решение

Не используйте веб-концепции для функций CLI … И вообще, не связывайтесь с состояниями аутентификации и входа в систему.

Что вы должны сделать, это переместить эту функцию в отдельный контроллер, который не требует, чтобы вы были «залогинены» и вставили проверку, чтобы убедиться, что она может быть запущена только через CLI, например так:

class Cli_only extends CI_Controller {

public function __construct()
{
parent::__construct();
is_cli() OR show_404();
}

}

Кроме того, если сделать метод контроллера закрытым в CI, он станет недоступным для внешнего мира, поэтому эта идея не может работать.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]