Аргерих Л. О языке РНР. Часть 4. Страница 123


$file_contents = file(llogfile);

Этот массив просматривается циклически, каждая строка передается функ­ции tokenizeLine(), а затем инкрементируется счетчик каждого кода статуса:

foreach ($file_contents as $line) { $info„array = tokenizeLine($line); $status_code[$info_array['StatusCode']]++;

)

Затем сценарий создает текст сообщения электронной почты и отправляет его администратору:

$email = "Summary of codes for todays logs\n\nCode\tCount\n";

foreach ($status_codЈ as $code => Scount) { $email .= "$code:\t$count\n";

}

mail($admin_email, "Summary of weblogs", Semail);

?>

Для облегчения трудов автоматизируем запуск этого сценария, чтобы он ежедневно выполнялся в полночь. Под Linux мы воспользуемся сгоп, а под Windows NT/2000 - командой AT. Начнем с сгоп.

сгоп

Демон сгоп предоставляет возможность автоматизации заданий под Linux/ UNIX. Демон сгоп просматривает каждую минуту файл crontab каждого пользователя и проверяет, не надо ли выполнить какие-нибудь действия. Системный администратор (или любой пользователь) может автоматизиро­вать с его помощью такие задачи, как запуск приведенного сценария.

В записи crontab шесть полей. В первых пяти задается время, в которое должно производиться действие, а в последнем - команда, которую должен выполнить демон сгоп, В каждом из полей времени задается значение, кото­рое при сравнении должно соответствовать текущему системному времени, чтобы команда была выполнена. Поле может содержать звездочку (*), и тог­да команда выполняется всегда, если все остальные поля соответствуют.

В первом поле задается количество минут после начала часа во времени

выполнения команды. Во втором поле задается час суток в третьем -

день месяца (1-31), в четвертом - месяц года (1-12) и в пятом - день недели (0—6, где 0 соответствует воскресенью). Более подробную информацию о ко­манде можно найти на

Мы хотим, чтобы сценарий выполнялся каждую полночь. Если сценарий называется mail_stats. php и расположен в каталоге /home/j moo re/, то задача решается при помощи следующей записи в crontab:

О 0 * * * /usr/local/bin/php -q /home/jmoore/mail_stats.php

Эта запись сообщает демону or on, что когда час и минута одновременно рав­ны 0 в любой день любого месяца, должна быть выполнена команда /usr/lo-

cal/bin/php -qmail_stats. php.

В оболочке Linux/UNIX можно сделать файл сценария исполняемым, установив для него требуемые права доступа (обычно командой chmod а+х иа- il stats. php, уточнить можно в системной документации). Затем введите команду, с помощью которой оболочка должна выполнить сценарий, в первую строку этого сценария. Например, #! /usr/local/bin/php -q. Это сообщает оболочке, что надо выполнить сценарий с помощью выполняемого модуля /usr/local/bin/php с флагом -q.