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


AT

Команда AT в Windows NT представляет собой эквивалент сгоп в Linux. Она позволяет автоматически запускать задания под Windows 2000, ХР и NT. Для этого надо ввести запись в список AT. Это делается из командной строки путем ввода команды вида:

at [\\computername] time [/interactive] [/every:date[,...] | /next:date[,... ]] command

Нам надо, чтобы каждую полночь выполнялась команда php -q c:\ma- H_stats. php (в предположении, что сценарий mail_stats, php находится в кор­невом каталоге диска Этого можно добиться следующей командой:

AT 00:00 /every:M,T,W,Th,F,S,Su php -q c:\mail_stats.php

Она устанавливает, что php -q выполняется в полночь в

каждый день недели (Monday, Tuesday, Wednesday, Thursday, Friday, Satur­day и Sunday).

Планировщикзаданий Windows

В Windows 95/98/ME не существует механизма or on tab/AT, Вместо этого име­ется планировщик заданий. Доступ к мастеру планирования заданий осу­ществляется через Start | Programs| Accessories | System Tools Scheduled Tasks.

Сначала надо создать пакетный файл, например С: \CHECKL0G. ВАТ. С помощью этого пакетного файла мы будем выполнять сценарий. Будем считать, что переменная пути установлена правильно, и тогда в нем должна быть всего одна строка:

php -q c:\mail_stats.php

Сохранив этот файл на диске, откройте Scheduled Task Manager и добавьте новое задание двойным щелчком по значку Add Scheduled Task. Щелкните по кнопке Next и задайте только что созданный пакетный файл, нажав кнопку Browse и найдя его. Заданию можно присвоить имя (например, CheckLogTask) и указать время и регулярность его выполнения. Однако при работе с планировщиком заданий есть довольно существенное ограничение. Для каждого задания можно установить только один момент времени. Эту проблему можно ре­шить, создав несколько заданий, запускающих одну и ту же программу, и дать им разные имена (CheckLogTaskl, CheckLogTask2, CheckLogTask3 и т. д.).

Передача аргументов в командной строке

Приведенный сценарий справляется со своей задачей, но что делать, если есть несколько журналов для различных виртуальных серверов и каждый журнал надо направлять своему администратору? Одно из решений состоит в том, чтобы иметь по экземпляру сценария для каждого журнала, указав в каждом свои переменные для журналов и администраторов. Гораздо эффек­тивнее принимать аргументы из командной строки, чтобы вызывать сцена­рий в виде mail_stats. php <logfile> <administrators_email>.