Bug #69049 [Fbk]: Unable to get output of slow process

From: Date: Fri, 13 Feb 2015 13:58:13 +0000
Subject: Bug #69049 [Fbk]: Unable to get output of slow process
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-190668@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69049&edit=1 ID: 69049 Updated by: ab@php.net Reported by: aserbulov at parallels dot com Summary: Unable to get output of slow process Status: Feedback Type: Bug Package: Streams related Operating System: Windows PHP Version: 5.5.21 Block user comment: N Private report: N New Comment: The pipe needs to be peeked, otherwise in much more cases this will just hang. Especially if there's a lot of data passed. And we cannot control the pipe buffer size. Another solution I had in mind for this was using threads. However it's much more complicated and brings overheads. For every proc_open call a thread or two would have to be started, not sure it really justifies it. But otherwise, is the solution i've described at the start with stderr and co. applicable to your case? Thanks. Previous Comments: ------------------------------------------------------------------------ [2015-02-13 13:49:53] ab@php.net @aserbulov, yeah, however in practice, if one tries to do the blocking read from the deadlocked pipe - here we are. Increasing timeout will probably add the idle circles in the simple cases though. Heh. ------------------------------------------------------------------------ [2015-02-13 13:44:02] ab@php.net But what is actually missing here is the blocking read. After the first circle it's errno 2, ret 0, eof 1 Because nothing was available in the pipe ... as we emulate the blocking read now, it might make sense to just increase the timeout. Cheers. ------------------------------------------------------------------------ [2015-02-13 13:42:50] aserbulov at parallels dot com The patch https://bugs.php.net/patch-display.php?bug_id=69049&patch=stream_oef.diff&revision=latest does not fix particular issue - process hangs forever. But the idea is correct - set eof to true only if end of the pipe is reached. ------------------------------------------------------------------------ [2015-02-13 13:37:30] ab@php.net With your patch, the snippet doesn't terminate. Thanks. ------------------------------------------------------------------------ [2015-02-13 12:37:33] aserbulov at parallels dot com Look at https://bugs.php.net/patch-display.php?bug_id=69049&patch=stream_oef.diff&revision=latest It should fix particular issue... ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=69049 -- Edit this bug report at https://bugs.php.net/bug.php?id=69049&edit=1

« previous php.bugs (#190668) next »