![]() |
|
||||||||||||||
|
|
|
// index.php
<?php
// генерация и вывод страницы пользователю
// ...
// страница отправлена и можно
// выполнить сервисные функции
// подключаем нужные файлы
include('service.php');
// запускаем выполнение операций
EmailSiteNews();
BackupMyDatabase();
UpdateSiteCounters();
?>
Единственное преимущество этого метода - не требуется ничего, кроме интерпретатора PHP, а вот серьёзных недостатков несколько: 1. Сервисные операции выполняются при каждой загрузке или обновлении страницы, следовательно при большом количестве посетителей сервер будет сильно перегружен. 2. Сервисный скрипт должен контролировать время своего выполнения и своевременно сохранять промежуточные результаты, т.к. на на сервере существует предельное время выполнения скриптов (обычно 30-40 секунд). по истечении которого скрипт принудительно прерывается. 3. Отсутствует возможность планирования выполнения скрипта, т.е. если ни один пользователь на сайт не зайдёт - все задачи останутся неисполненными. 4. При неправильной обработке ошибок они будут отображаться в браузере пользователя. Это плохо само по себе, а в некоторых случаях такие ошибки приводят ещё и к "расползанию" дизайна. 5. Очень сложно планировать нагрузку на сервер, т.к. посещаемость сайта можно предсказать лишь с определённой вероятностью. Более оптимальным и простым решением является использование внешних программ-пранировщиков. Например, большинство Unix-провайдеров предоставляют доступ к программе crontab, которая даёт возможность запланировать выполнение любых задач на определённое время или с заданной периодичностью. Сrontab позволяет выполнять скрипты PHP, при этом интерпретатор запускается в режиме командной строки. Как правило, в панели управления хостингом есть визульный интерфейс для редактирования cron-правил. Чаще всего встречаются два типа интерфейсов - классический и расширенный. Функционально они идентичны, но расширенный вид более нагляден и понятен начинающему пользователю. В любом случае, при создании нового задания вам необходимо будет указать три параметра: время запуска, скрипт для запуска и адрес электронной почты, куда будет направлен отчёт о выполении. Время запуска задаётся пятью блоками: минута, час, день_месяца, месяц и день_недели. Для каждого блока можно указать периодичность, точное значение, диапазон или список значений, а если указать "*" (звёздочка), то значение учитываться не будет. Например: // ежендевный запуск в 3:00 * 3 * * * Второй параметр - это собственно исполняемая команда. В большинстве случаев команда выполнения скрипта записывается в формате <путь_к_интерпретатору> <полный_путь_к_скрипту>. При этом все пути указываются полностью, начиная от корневого каталога сервера. Например, интерпретатор расположен в "./local/sbin/php5.exe", а исполняемый скрипт - в "web/http/service.php". Если нам надо выполнять скрипт ежечасно, то строка задания будет следующей: 0 * * * * /local/sbin/php5.exe /web/http/service.php Третий параметр - адрес электронной почты - вводится один раз для всех заданий. Результаты выполнения задачи будут высылаться на указанный адрес. Если скрипт был завершен с ошибкой - в тексте письма будет соответствующая запись с указанием ошибки и строки, где она произошла. К сожалению, сообщения будут приходить и тогда, когда всё прошло успешно, поэтому если вы решили выполнять скрипт ежеминутно - готовьтесь получать по шестьдесят писем в час. Запуск интерпретатора в режиме командной строки накладывает некоторые ограничения на программиста. Так, становятся недоступны некоторые глобальные массивы и переменные Apache. Поэтому на crontab не стоит возлагать задачи, требующие знания настроек web-сервера или других системных параметров. Таким образом, если ваш провайдер и предоставляет доступ к планировщику заданий - обязательно пользуйтесь им и не изобретайте велосипед. Ну а если уж выбора не остаётся и crontab недоступен - выходите из положения средствами PHP и собственной смекалкой. |
|
|
Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :) |
|
© 2005-2012 |
E-mail: |