Подтвердить что ты не робот

PHP proc_open на окнах

Я создал процесс, используя proc-open, но под окнами stream-select не работает. То, что я пытаюсь достичь, - это читать как из stdout, так и из stderr, в то же время записывая stdin и гарантируя, что выход можно сопоставить с входами. Есть ли обходной путь для окон, чтобы преодолеть этот недостаток?

4b9b3361

Ответ 1

Вы не очень подробно рассказали о том, что не работает для вас при выборе потока в Windows. Однако это рабочий пример того, как использовать выбор потока. Я просто успешно справился с PHP 5.4 в Windows XP.

Изменить: Uhhmmm.. Похоже, что это было неработоспособным в конце концов... Sry, тестирование еще немного здесь..:)

Изменить еще раз:

Итак, я сделал еще несколько экспериментов по этому поводу, но безуспешно.

Может быть, вы должны просто позволить процессам говорить TCP/UDP/IP друг с другом?

Другой путь вперед (если вы все еще хотите использовать stdout/stdin/stderr в своем процессе), возможно, должен использовать proc_open с обработчиками файлов, поэтому ваш процесс записывается в файлы, а затем используйте что-то похожее на unix 'inotify, загрузку этот материал с классом PHP DOTNET: Есть ли что-то вроде inotify в Windows?, чтобы обнаружить изменения в файлах...? Просто идея...

Или, может быть, измените на unix-like os?;) Хорошо, это для меня сегодня. Спокойной ночи

Ответ 2

добавление bypass_shell сработало для меня

$proc=proc_open($cmd,
        array(
            0=>array('pipe', 'r'), //stdin
            1=>array('pipe', 'w'), //stdout
            2=>array('pipe', 'w')  //stderr
            ),
        $pipes,
        $dir,
        null,
        array('bypass_shell'=>true)
    );