Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Это - то, для чего сделаны cronjobs. man crontab
принятие Вас выполняют сервер Linux. Если у Вас нет доступа оболочки или никакого способа установить cronjobs, существуют бесплатные сервисы, которые устанавливают cronjobs на внешних серверах и проверяют с помощью ping-запросов один из Ваших URL.
Командная строка PHP + крон был бы путем, которым я пойду. Это просто и должно отвечать всем требованиям. Это обычно устанавливается с PHP как само собой разумеющееся.
Если бы Вы не хотите настраивать задания крона и этажерку (хотя я предположил бы, что это - лучший метод), решение, которое Вы предоставили, довольно хорошо. В ряде проектов у меня был сам Сценарий PHP, делают проверку, чтобы видеть, пора ли выполнить обновление.
оборотная сторона (хорошо, одна из вниз сторон) - то, что, если никто не использует приложение во время определенного периода тогда, сценарий не будет работать.
позитивный аспект - то, что, если никто не использует приложение во время определенного периода тогда, сценарий не будет работать. Задачами, которые у меня есть настроенный, чтобы сделать, являются вещи как "обновление файл кэша", "делают ежедневное резервное копирование" и этажерку. Если кто-то не использует приложение, то Вы не собираетесь нуждаться в обновленных файлах кэша, ни там собираетесь быть любыми изменениями базы данных в резервном копировании.
единственная модификация к Вашему методу, который я предложил бы, состоит в том, что Вы только осуществляете те проверки, когда кто-то успешно входит в систему. Вы не должны проверять каждую загрузку страницы.
Если у Вас есть хост cPanel, можно добавить задания крона через веб-интерфейс. Перейдите к Усовершенствованному-> Cron Jobs и используйте неусовершенствованную форму для установки частоты крона. Вы хотите команду как это:
/usr/bin/php /path/to/your/php/script.php
Я отвечаю на это теперь, потому что никто, кажется, не упомянул это точное решение.
На сайте я в настоящее время продолжаю работать, мы настроили задание крона с помощью cPanel, но вместо того, чтобы выполнить Интерпретатор PHP непосредственно (потому что мы используем CodeIgniter и наш код, отображается на функции контроллера, это, вероятно, не прекрасная идея), мы используем wget
.
wget -q -O cron_job.log http://somehost/controller/method
-q
то, так, чтобы wget не генерировал вывода (таким образом, Вы не будете продолжать получать электронные письма). -O cron_job.log
сохранит содержание того, что Ваш контроллер генерирует к файлу журнала (перезаписанный каждый раз, таким образом, это не будет продолжать расти).
я нашел, что это самый легкий способ получить 'надлежащую' работу крона.
если Вы задаетесь вопросом, как на самом деле выполнить Ваш Сценарий PHP от крона, существует две опции: Назовите интерпретатор PHP непосредственно (т.е. "php/foo/myscript.php") или используйте рысь (рысь http://mywebsite.com/myscript.php). Какой, который Вы выбираете, зависит главным образом от того, как для Вашего сценария нужна его настроенная среда - пути и полномочия доступа к файлу будут отличаться в зависимости от того, называете ли Вы его через оболочку или веб-браузер. Я рекомендовал бы использовать рысь.
Один побочный эффект состоит в том, что Вы получаете электронное письмо каждый раз, когда оно работает. Для обхождения этого я заставляю свои Сценарии PHP крона ничего не произвести (и это должно быть ничто, даже пробел), если они завершаются успешно, и сообщение об ошибке, если они перестали работать. Я затем называю их использующий маленький Сценарий PHP от крона. Таким образом, я только получаю электронное письмо, если оно перестало работать. Это - в основном то же, поскольку метод рыси, кроме моего сценария оболочки делает Запрос HTTP и не рысь.
Назовите этот сценарий "docron", или что-то (помните к chmod +x), и затем используйте команду в своем crontab: "docron http://mydomain.com/myscript.php". Это посылает Вам по электронной почте вывод страницы как электронное письмо HTML, если страница возвращает что-то.
#!/usr/bin/php
<?php
$h = @file_get_contents($_SERVER['argv'][1]);
if ($h === false)
{
$h = "<b>Failed to open file</b>: " . $_SERVER['argv'][1];
}
if ($h != '')
{
@mail("cron@mydomain.com", $_SERVER['argv']['1'], $h, "From: cron@mydomain.com\nMIME-Version: 1.0\nContent-type: text/html; charset=iso-8859-1");
}
?>
Cron - это решение общего назначения для проблем планирования. Но когда вы переходите на большие объемы и частота расписаний возрастает, могут возникнуть проблемы надежности/перекрытия. Если вы видите такие проблемы, подумайте о чем-то вроде supervise или более сложном monit.