#codeigniter #cron
#codeigniter #cron
Вопрос:
Я пытаюсь создать задание cron, используя преимущества моей текущей настройки CI и использования контроллеров и моделей. Я использую загрузчик Cron (http://codeigniter.com/wiki/Cron_job_bootstrapper /) потому что это дает мне легкий доступ к тестированию процесса локально по требованию или быть доступным как традиционный процесс cron на сервере. Я могу получить доступ к контроллеру с помощью файла bootstrapper и командной строки, однако я получаю много разных сообщений об ошибках или предупреждений в зависимости от того, как я настроил свой контроллер.
Если я сохраню контроллер таким, каким он должен быть с parent::Controller();
, я получу следующее сообщение:
Не удается подключиться к вашему серверу базы данных с использованием предоставленных настроек.
Ошибка исходит из DB_driver.php initialize()
метод.
Если я удалю вызов parent::Controller()
с контроллера, то получу следующее предупреждение:
<p>Severity: Warning</p>
<p>Message: date(): It is not safe to rely on the system's timezone settings. You
are *required* to use the date.timezone setting or the
date_default_timezone_set() function. In case you used any of those
methods and you are still getting this warning, you most likely misspelled
the timezone identifier. We selected 'America/New_York' for
'EDT/-4.0/DST' instead</p>
<p>Filename: htdocs/cron.php</p>
<p>Line Number: 122</p>`
Удалив parent::Controller();
я не могу получить доступ к каким-либо моделям через $this->load->model('model');
, и я получаю следующее сообщение:
Неустранимая ошибка: вызов функции-члена model() для не-объекта в /Applications/MAMP/htdocs/my_site/system/application/controllers/cron.php в строке 9
Любая информация, которая позволит мне использовать файл bootstrapper с CI, будет очень полезной.
Ответ №1:
-
Установите $ db[‘default’][‘db_debug’] = TRUE; в файле конфигурации вашей базы данных, чтобы включить более подробное сообщение об ошибках.
-
Вам необходимо учесть предупреждение о часовом поясе и установить значение по умолчанию в вашем файле php.ini. Это новое требование, начиная с PHP 5.3. Если вы работаете на общем сервере и не имеете доступа к php.ini, вы можете либо запросить, чтобы ваш веб-хост установил значение по умолчанию, либо вы можете попробовать установить его вручную с помощью ini_set() в верхней части вашего файла начальной загрузки.
-
Проверьте, загружается ли файл конфигурации вашей базы данных, и если да, дважды проверьте настройки подключения к базе данных. Если настройки правильные, возможно, вас блокирует брандмауэр или пользователь базы данных, к которому вы подключаетесь, может не иметь разрешения на доступ к базе данных, которую вы пытаетесь использовать.
Комментарии:
1. Спасибо, Джонатан. # 1 уже был установлен. # 2 также был установлен, но MAMP переопределяет его (я исправил это с помощью
date_default_timezone_set("America/New_York");
. В моем поиске для проверки # 3 я обнаружил, что все также было правильно, но нашел другого пользователя, у которого была такая же проблема. Изменение пути к PHP сделало свое дело. Еще раз спасибо.