Написание консольных скриптов на PHP (Рейтинг: +1)

Печать / RSS
Статья не для гуру =)
Писать консольные скрипты приходится не часто, но всё-таки приходится. Не учить же для этого Shell (хотя знание его желательно), тем более, если надо что-то срочно написать и из языков вам известен только PHP. В этой статье я раскажу о написании консольных скриптов на PHP для Linux.
Итак, открываем терминал и создадим для начала какой-то тестовый файл:
$ touch test

Сделаем его исполняемым:
$ chmod +x test

Теперь возьмёмся за его редактирование:
$ nano test

и напишем туда следующее
#!/usr/bin/php
<?php
echo 'Привет, мудак))';
?>

дальше Ctrl+X и сохраняем файл. Первая строка обозначает путь к интерпритатору, дальше идёт PHP-код. Собственно и простенький скрипт готов. Можно запустить
$ ./test 

То что выведет думаю понятно =)
Напишем в содержимое файла следующее
#!/usr/bin/php
<?php
print_r($_SERVER);
?>

и запустим. Выведет что-то наподобии этого

Array
(
[rvm_gemsets_path] => /home/fuelen/.rvm/gemsets
...........
[PATH_TRANSLATED] => ./test
[DOCUMENT_ROOT] =>
[REQUEST_TIME] => 1310847154
[argv] => Array
(
[0] => ./test
)

[argc] => 1
)

Обратите внимание на последние 2 элемента массива: argv и argc. Первый - массив значений, переданных через командрую строку; второй - число значений. Всегда будет как минимум 1 элемент в массиве - это адрес скрипта. Эти переменные также доступны просто как $argc и $argv. Изменим наш скрипт и запишем туда следующее
#!/usr/bin/php
<?php
//распечатываем содержимое массива только тогда
//когда есть доп. параметры
if($argc >1){
print_r($argv);
}
?>

Запустим скрипт, добавив немного параметров:
$ ./test ololo blblbl

На экране мы увидим следующее

Array
(
[0] => ./test
[1] => ololo
[2] => blblbl
)

Наверное у вас возник вопрос как получить какое-то значение при исполнении скрипта? Очень просто
<?
$a = trim(fgets(STDIN));

Переменной $a будет считана 1 строка из STDIN (подробнее о потоках ввода и вывода смотреть тут).
Ну и на останок простенький скрипт, который будет получать данные в процессе исполнения скрипта:
#!/usr/bin/php
<?php
echo "ваше имя: \n";
$name = trim(fgets(STDIN));
echo "ваша фамилия:\n";
$surname = trim(fgets(STDIN));
echo "кукареку $surname $name!!!\n";
?>

Автор: Артур (17.07.11 / 00:40)
php, console, linux
Рейтинг: +1
Просмотры: 2943
Комментарии (7) »