Анонсы:
|
PHP. Урок 21 Выполнение PHP-сценариев в командной строкеУрок 21. Выполнение PHP-сценариев в командной строке
PHP разрабатывался для написания динамических Web-страниц. Но из-за большой мощности его стали применять для написания сценариев командной строки и даже для разработки приложений. В этом уроке вы узнаете, как использовать PHP в командной строке и создавать сценарии оболочки. Среда командной строкиДля того чтобы запускать PHP-сценарии из командной строки, нужно установить интерпретатор PHP на данной системе. Для Web-среды он устанавливается как модуль Apache. Но для использования в интерфейсе командной строки (CLI) его нужно установить как самостоятельное приложение под названием php. Отличие между исполняемыми файлами CLI и CGIНачиная с версии 4.2, PHP содержит разные бинарные программы для CGI и CLI. Оба обработчика предоставляют тот же интерпретатор языка. Но версия CLI имеет следующие отличия, удобные для командной строки.
Чтобы узнать о том, является программа php CGI- или CLI-версией, нужно запустить ее с параметром -v. тогда появляется информация о версии. Например, следующий вывод генерирует CLI-версия PHP 5.0.3: Значение в круглых скобках после версии PHP показывает используемый вариант серверного интерфейса (SAPI). Его можно определить с помощью функции php_sapi_name. Версия для Windows. Версия для PHP 4.2. включает два исполняемых файла: CGI-версию с именем php.exe и CLI-версию с именем php-cli.exe. Для PHP 4.3 оба называются php.exe, но находятся, соответственно, в каталогах cgi и cli. Написание сценариев PHP для оболочки Linux/UnixНа платформах Linux/Unix сценарий оболочки — это текстовый файл, содержащий набор инструкций, которые обрабатываются соответствующим интерпретатором. Самый простой интерпретатор оболочки — Bourne Shell, или sh. Хотя в данный момент более популярна его улучшенная версия — Bourne Again Shell, или bash. Она полностью совместима с sh, но имеет больше полезных возможностей. Большинство языков оболочек довольно ограниченные и часто требуют вызова дополнительных программ. PHP же представляет гибкий и мощный синтаксис, а также лучшую производительность, чем большинство стандартных решений. Расположение PHP. Выполняемый файл php обычно устанавливается в /usr/local/bin или /usr/bin, в зависимости от типа установки. И может находится вообще в другом месте. Команда which php позволяет его быстро найти. Все сценарии оболочки начинаются с символов #!, после которых следует полный путь к интерпретатору команд. Для традиционных сценариев оболочки эта строка выглядит так: Для сценариев PHP она принимает следующий вид: Для файла нужно установить разрешение на выполнение. Это можно сделать с помощью такой команды: C помощью следующей команды устанавливается разрешение на выполнение для всех пользователей: Без флага выполнения сценарий выполняется, если подать его на вход интерпретатора PHP. Для этого вызывается команда php с аргументом имени файла. Две команды ниже — идентичны (параметр -f используется для большей ясности, но не является обязательным): Название сценария. Нет каких-либо правил для именования сценариев оболочки. Но лучше оставить расширение .php. Тогда понятно, что это сценарий PHP. Сценарии Bourne shell иногда имеют расширение .sh, но чаще в названиях команды вообще не используется расширение. PHP-сценарии командной строки для WindowsWindows не поддерживает альтернативные интерпретаторы команд. Поэтому, чтобы использовать PHP-сценарий в Windows, нужно передать название файла программе php.exe. Параметр -f – необязательный, поэтому два таких вызова эквивалентны: Сценарии оболочки. Можно создать простой сценарий оболочки, который вызывает php.exe с нужным аргументом файла, чтобы запускать сценарий одной командой. Вставка PHP-кодаКак и для Web-среды, можно вставлять PHP-код в текст сценария. Любой текст, который находится за пределами дескрипторов <?php, передается на вывод. Но обычно нужно создать сценарий полностью состоящий из PHP-кода. Поэтому в начале PHP-сценария для оболочки нужно поставить <?php. PHP позволяет создавать сценарии, которые выводят только часть элементов в больших статических текстовых файлах. Написание сценариев для командной строкиВ языке PHP есть механизмы, которые помогают писать сценарии для командной строки. Иногда их используют для Web-среды. Ниже приводится их описание. Режим вывода символовПри генерировании Web-вывода используется дескриптор <br>, чтобы разделить строки. При выводе на Web-страницу символа перевода строки, \n, разрыв будет только в HTML-версии. При выводе в браузере он не заметен. В сценариях командной строки используется только текстовый вывод, поэтому нужно использовать перевод строки для форматирования текста. Если сценарий генерирует произвольный вывод, нужно завершать его \n после вывода последнего элемента. Можно получить преимущество от режима с фиксированной шириной символов при выполнении в командной строке, если использовать пробел для создания столбцов. Функция printf позволяет устанавливать ширину и задавать выравнивание символов. Это не дает соответствующего эффекта в HTML-выводе, если не использовать дескриптор <PRE>. Аргументы командной строкиМожно передать аргументы сценарию оболочки. Для этого они указываются после имени сценария. Количество аргументов хранится в переменной $argc, а сами аргументы — в массиве с числовыми индексами $argv. Аргументы. Названия argc и argv используются исторически. Изначально они применялись в языке С, а сейчас широко применяются во многих языках программирования. В PHP $argc создается только по договоренности. Можно вместо этого использовать count($argv), чтобы определить, сколько аргументов передается в сценарий. Массив $argv всегда содержит как минимум один элемент, даже если дополнительные аргументы не передавались в сценарий. Просто $argv[0] содержит название сценария и тогда $argc равен 1. Для сценария в листинге 21.1 нужно задать два аргумента. В противном случае выводится сообщение об ошибке, и выполнение завершается. На выходе получаем большее из этих двух аргументов. Листинг 21.2. Использование параметров командной строки
Начальное условие в листинге 21.1 проверяет $argc на равенство 3. Такое число получается из двух параметров командной строки и названия сценария в элементе $argv[0]. Кроме того, $argv[0] используется при выводе сообщения об ошибке. Такой прием позволяет узнать имя сценария. Потоки ввода-выводаДля Web-окружения можно напрямую выводить данные в стандартные потоки ввода, вывода и ошибок. Но это чаще используется в сценариях командной оболочки. Для доступа к потокам используются функции работы с файловой системой. Нужно просто открыть обработчик файла для соответствующего потока и управлять им таким же образом. Идентификаторы потока очень напоминают URL (нужно помнить, что PHP позволяет открыть URL с помощью функций доступа к файлам). Они начинаются с php://, после которого следует название потока. Следующее выражение открывает для чтения стандартный поток ввода: Доступ к потокам часто используется в сценариях командной строки, поэтому в PHP есть удобные сокращения. Константы STDIN, STDOUT и STDERR предоставляют непосредственный доступ к открытым потокам и не требуют вызова fopen. Сценарий в листинге 21.2 использует три стандартных потока. Он читает данные из стандартного ввода и переводит их в верхний регистр с помощью функции strtoupper. Если входные данные содержат не только буквы и цифры, выводится сообщение об ошибке в стандартный поток ошибок. Листинг 21.2. Чтение и запись в стандартные потоки
Если запустить этот сценарий в командной строке, он будет ожидать ввода данных по одной строке за раз и возвращать ее в верхнем регистре. Преимущество стандартного потока ввода в том, что ввод можно перенаправить из другого источника. Передавать содержимое файла myfile в сценарий myscript и перенаправить вывод в outfile можно с помощью следующей команды: Сценарий из листинга 21.2 переводит все данные файла outfile в верхний регистр. Все сообщения об ошибках выводятся на экран, если не перенаправить стандартный поток ошибок. Все константы и идентификаторы потока, доступные в командной строке PHP, показаны в табл. 21.1. Таблица 21.1. Доступ к потокам для PHP CLI
Создание настольных приложенийPHP настолько мощный язык, что позволяет создавать полноценные приложения. А поскольку PHP является интерпретирующим языком приложения написанные с его использованием, легко переносимы. Расширение PHP-GTK реализует интерфейс к оконному набору инструментов GIMP, GTK+. Это позволяет разработчикам PHP создавать полноценные приложения с графическим интерфейсом, которые используют окна, меню, кнопки и поддержку мыши. РезюмеВ этом уроке вы узнали, как писать PHP-сценарии для командной строки. В следующем уроке вы научитесь обрабатывать ошибки и отлаживать сценарии PHP. |
Погода в Рудне на 10 Дек 2024 г. 704 - Вьетнамских донгов - 1 |