Передача входной информации в программу
Задача
Пусть надо передать внешней программе входную информацию из сценария на 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.
Комментарии:
Нету комментариев для вывода...