From ff0bb01a9180f39876c4d73c5ff7fc043e84eccf Mon Sep 17 00:00:00 2001 From: Romain Neutron Date: Sat, 14 Jun 2014 14:38:29 +0200 Subject: [PATCH] [Process] Reduce I/O load on Windows platform --- src/Symfony/Component/Process/ProcessPipes.php | 2 ++ .../Component/Process/Tests/AbstractProcessTest.php | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Process/ProcessPipes.php b/src/Symfony/Component/Process/ProcessPipes.php index f35d1c1287..8b11a930fc 100644 --- a/src/Symfony/Component/Process/ProcessPipes.php +++ b/src/Symfony/Component/Process/ProcessPipes.php @@ -284,6 +284,8 @@ class ProcessPipes private function readStreams($blocking, $close = false) { if (empty($this->pipes)) { + usleep(Process::TIMEOUT_PRECISION * 1E4); + return array(); } diff --git a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php index 91b8aca20d..d5bb967972 100644 --- a/src/Symfony/Component/Process/Tests/AbstractProcessTest.php +++ b/src/Symfony/Component/Process/Tests/AbstractProcessTest.php @@ -583,7 +583,14 @@ abstract class AbstractProcessTest extends \PHPUnit_Framework_TestCase } $duration = microtime(true) - $start; - $this->assertLessThan($timeout + Process::TIMEOUT_PRECISION, $duration); + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + // Windows is a bit slower as it read file handles, then allow twice the precision + $maxDuration = $timeout + 2 * Process::TIMEOUT_PRECISION; + } else { + $maxDuration = $timeout + Process::TIMEOUT_PRECISION; + } + + $this->assertLessThan($maxDuration, $duration); } public function testCheckTimeoutOnNonStartedProcess()