Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> proc_open, запуск внешнего скрипта 
V
    Опции темы
MystDeim
Дата 20.2.2010, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Есть такой скрипт заглушка, который просто повторяет, то что ему печаютат после запуска:
Код

#!/usr/bin/php
<?php
$i = 0;
while (trim($line = fgets(STDIN)) != 'exit'  &&  $i < 10) {
    $i++;
    fwrite(STDOUT, $line);
}

exit(0);


Вот скрипт, с помощью которого я хочу с ним работать:
Код

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("file", "/tmp/error-output.txt", "a") // stderr is a file to write to
);
$process = proc_open('./exec.php', $descriptorspec, $pipes);

if (is_resource($process)) {
    echo '<pre>';
    $data = "test\n";
    echo $data;

    fwrite($pipes[0], $data);
    fclose($pipes[0]);

    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $return_value = proc_close($process);

    echo '</pre>';
    echo "command returned $return_value\n";
}


В таком варианте всё работает.

Не могу понять, как интерактивно взаимодействовать с 1 скриптом, чтобы я ему команду, он мне ответ.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
sTa1kEr
Дата 21.2.2010, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



И в чем заключается проблема? http://php.net/switch
Код

// ...
switch ($line) {
    case 'hello': $answer = 'Hello, World'; break;
    case 'exit': $answer = 'Bye Bye!'; break;
    default: $answer = 'Unknown Command: '.$line; break;
}
fwrite(STDOUT, $answer);
// ...

PM MAIL   Вверх
MystDeim
Дата 21.2.2010, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 22.10.2007
Где: Россия->Юбилей ный

Репутация: нет
Всего: нет



Не первый скрипт трогать нельзя.

Вообщем уже сам нарыл smile можно читать из $pipes[1] c помощью fgets по одной строке, сразу после того как сунули команду.
--------------------
Учебные материалы для студентов http://studlab.org
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.