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

Задача
Пусть надо передать внешней программе входную информацию из сценария на 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.
Теги:
входная информация
Добавлено: 22 Июля 2018 18:15:43 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...