Передача входной информации в программу

Задача
Пусть надо передать внешней программе входную информацию из сценария на PHP. Например, при работе с базой данных вам потребовалось запустить внешнюю программу для индексирования текста, и этой программе надо передать текст.

Решение
Откройте канал к программе с помощью функции popen(), выполните запись в канал с помощью функций fputs() или fwrite(), затем закройте канал, вызвав функцию pclose():

$ph = popen('program arg1 arg2','w') or die($php_errormsg);
if (-1 == fputs($ph,"first line of input\n")) { die($php_errormsg); }
if (-1 == fputs($ph,"second line of input\n")) { die($php_errormsg); }
pclose($ph) or die($php_errormsg);

Обсуждение
Этот пример использует функцию popen() для вызова команды nsupdate, которая посылает серверу имен запросы динамического обновления DNS (Dynamic DNS Update):

$ph = popen('/usr/bin/nsupdate -k keyfile') or die($php_errormsg);
if (-1 == fputs($ph,"update delete test.example.com A\n"))
{ die($php_errormsg); }
if (-1 == fputs($ph,"update add test.example.com 5 A 192.168.1.1\n"))
{ die($php_errormsg); }
pclose($ph) or die($php_errormsg);

Две команды посылаются nsupdate посредством функции popen(). Первая удаляет A-запись test.example.com, а вторая добавляет новую A-запись для test.example.com с адресом 192.168.1.1.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Блокировка файла
Выбор случайной строки из файла
Запись в несколько файловых дескрипторов одновременно
Запись в стандартный поток вывода
Непосредственная модификация файла без временной копии

Вернуться в раздел: PHP / 18. Файлы