LINUX.ORG.RU

PHP: чтение программного канала №3

 , ,


1

2

Всем доброго времени. Использую proc_open для запуска своего php-скрипта:

$cmd = 'php -d mbstring.func_overload=0 "/path/to/script.php';
$procId = proc_open($cmd, array(3 => array('pipe', 'r')), $pipes);
$paramStreamId = $pipes[3];
fwrite($paramStreamId, "Line1\r\n");
fwrite($paramStreamId, "Line2\r\n");
fclose($paramStreamId);
proc_close($procId);

Вроде использовать №3 можно, так как в документации сказано:

Номера дескрипторов не ограничены только 0, 1 и 2 - вы можете назначить любой действительный номер дескриптора и он будет передан дочернему процессу.

Теперь вопрос, как в запускаемом таким образом скрипте обратиться к каналу №3 (в который передаются Line1 и Line2). Стандартный ввод (канал №0) мне не подходит, потому что туда будут идти данные, а в канал №3 хочу передавать служебные параметры (вроде паролей), которые нужны для работы скрипта.

Пробовал вот так:

$streamId = fopen('php://3', 'r');
...но это приводит к ошибке. Есть ли какой-нибудь способ прочитать этот канал?

Ответ на: комментарий от goingUp

А вообще если тебе просто нужно передать параметры, то есть параметры командной строки и переменные окружения

goingUp ★★★★★
()
Ответ на: комментарий от goingUp

Параметры ком. строки не подходят, потому что пароли через них передавать нельзя, они могут логироваться. через окружение не думал, там может быть достаточно большой json, лучше напрямую в поток передавать.

Novascriptum
() автор топика
Ответ на: комментарий от goingUp

Это да, так можно, но я хотел узнать как именно прочесть то, что создано через proc_open. А то как-то глупо выходит - создать процесс и записать в третий канал можно, а прочитать из него - нет.

Novascriptum
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.