2012-03-26 1 views
0

Я использую readline в PHP для чтения из stdin, но когда я запускаю файл, PHP echos все возвращает обратно ко мне. Я использую это нравится:PHP echos readline на stdin

<file php file | otherprogram 

Когда я бегу это на моем сервере, это работает, как я ожидал, но когда я запускаю его на моем ноутбуке (PHP 5.3.10 с Suhosin-Patch (CLI)) это выводит stdin в stdout вместе с фактическим выходом скрипта. Это довольно раздражает, так как я делаю вывод на otherprogram.

Я попытался поймать выходную буферизацию, но это не сработало.

Кто-нибудь знает, что может быть причиной этого?

+0

Не уверен, что вы хотите здесь, но, возможно, [это] (http://php.net/manual/en/wrappers.php.php) может быть полезным – haltabush

+0

Я читаю из stdin, используя встроенную readline(), но когда я это делаю, stdin печатается на stdout –

ответ

1

Я знаю, что этот вопрос немного устарел, но у меня такая же проблема. Я считаю, что одна из двух причин вызывает это: функция readline() в php возвращает сигнал обратно на вход, который он получает (по одному символу за раз), и поэтому он заканчивается «выходом» до предполагаемого выхода. Если это не так, оболочка bash вторит вводу, когда она вводится.

Я немного склонен полагать, что это последний случай, потому что я не смог поймать вывод на PHP, используя его функции буферизации вывода (ob_start и ob_end_clean).

+0

> Мне не удалось поймать вывод на конец PHP, используя его функции буферизации вывода (ob_start и ob_end_clean). Я пробовал то же самое с теми же результатами. –