Написание консольных скриптов на PHP (Рейтинг: +1)
Статья не для гуру =)
Писать консольные скрипты приходится не часто, но всё-таки приходится. Не учить же для этого Shell (хотя знание его желательно), тем более, если надо что-то срочно написать и из языков вам известен только PHP. В этой статье я раскажу о написании консольных скриптов на PHP для Linux.
Итак, открываем терминал и создадим для начала какой-то тестовый файл:
Напишем в содержимое файла следующее
Ну и на останок простенький скрипт, который будет получать данные в процессе исполнения скрипта:
Добавил: Артур
17.07.2011 / 00:40Писать консольные скрипты приходится не часто, но всё-таки приходится. Не учить же для этого 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); ?>и запустим. Выведет что-то наподобии этого
Обратите внимание на последние 2 элемента массива: argv и argc. Первый - массив значений, переданных через командрую строку; второй - число значений. Всегда будет как минимум 1 элемент в массиве - это адрес скрипта. Эти переменные также доступны просто как $argc и $argv. Изменим наш скрипт и запишем туда следующее
Array
(
[rvm_gemsets_path] => /home/fuelen/.rvm/gemsets
...........
[PATH_TRANSLATED] => ./test
[DOCUMENT_ROOT] =>
[REQUEST_TIME] => 1310847154
[argv] => Array
(
[0] => ./test
)
[argc] => 1
)
#!/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"; ?>
Рейтинг:
+1
Просмотры: 3290Комментарии (7) »