Правда было б удобно некоторые операции в системе автоматизировать с помощью пхп? Ну например резервное копирование каких-то файлов на удаленный ftp сервер. Можно, конечно, установить у себя http сервер с поддержкой пхп или взять готовую сборку (денвер, например), но это не удобно, да и для запуска скрипта придеться колдовать с ключами запуска браузера. Но есть более простой выход. Начиная с версии php 4.3 можно запускать на исполнение пхп файлы через консоль, используя интепретатор php. Это стало возможно благодаря новому SAPI-типу (Server Application Programming Interface) под названием CLI (Command Line Interface).

Для запуска скриптов нам понадобиться интепретатор пхп версии >= 4.3 В версии для windows в нем будет файл php.exe. Имено этому файлу мы будем передавать скрипт для выполнения. Самое простое использование будет выглядить так (команда для командной строки):

"C:\Program Files\PHP\php.exe" "D:\temp\php\echo.php"

в таком случае интепретатор выполнит скрипт "D:\temp\php\echo.php". Существует ещё много различный ключей запуска для php.exe. Посмотреть их вы можете, если передадите php.exe ключ -h.

При таком запуске интерпретатор автоматически делает предопределение некоторых параметров из php.ini. А именно:

    html_errors=off (чтобы не захламлять консоль бессмыслеными для неё тегами)
    implicit_flush=on (отключает буферезацию вывода)
    max_execution_time=0 (бесконечное по времени выполнение скрипта)
    register_argc_argv=on (включает глобальные переменные PHP: $argc количество аргументов, передаваемых приложению и $argv массив текущих аргументов)

На счет последнего пункта: вы можете вызвать скрипт с дополнительными параметрами, которые после передадуться на обработку в скрипт. Они будут доступны в массиве $argv, причем элемент 0, будет содержать путь и имя скрипта. Единственное, если вам нужно использовать знак "-", то его следует заменить на "--". Например:

"C:\Program Files\PHP\php.exe" "D:\temp\php\echo.php" temp

тогда код вида:

echo 'file='.$argv[0].' 1='.$argv[1];

вернет: "file=D:\temp\php\echo.php 1=temp".

CLI так же добавляет три константы для удобной работы с консолью:

    $stdin = fopen('php://stdin', 'r');
    $stdout = fopen('php://stdout', 'w');
    $stderr = fopen('php://stderr', 'w');

где в переменную, в которую присваиваем значение, будет возращаться файловый указатель. В первом случае мы получим возможность читать команды, которые будут вводиться в консоли, во втором и третьем выводить в консоль сообщения.

В этом посте я не ставил цель рассказать как можно рульно писать скрипты под консоль, просто хотель сделать небольшой обзорчик о том, что это впринципе возможно и примерно какой функционал будет.