php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login

Patch time_sleep_until_basic.diff for Testing related Bug #61517

Patch version 2012-03-26 16:55 UTC

Return to Bug #61517 | Download this patch
Patch Revisions:

Developer: mattficken

--- C:/Users/v-mafick.REDMOND/Downloads/php-5.3-src-r324324/php-5.3-src-r324324/ext/standard/tests/misc/time_sleep_until_basic.phpt	Sun Oct 23 03:09:29 2011
+++ C:/Users/v-mafick.REDMOND/Desktop/time_sleep_until_basic.phpt	Mon Feb 20 15:57:21 2012
@@ -13,7 +13,19 @@
 <?php
   $time = microtime(true) + 2;
   var_dump(time_sleep_until( (int)$time ));
-  var_dump(microtime(true) >= (int)$time);
+  $now = microtime(true);
+  if(substr(PHP_OS, 0, 3) == 'WIN' ) {
+    // on windows, time_sleep_until has millisecond accuracy while microtime() is accurate
+    // to 10th of a second. this means there can be up to a .9 millisecond difference
+    // which will fail this test. this test randomly fails on Windows and this is the cause.
+    //
+    // fix: round to nearest millisecond 
+    // passes for up to .5 milliseconds less, fails for more than .5 milliseconds
+    // should be fine since time_sleep_until() on Windows is accurate to the
+    // millisecond(.5 rounded up is 1 millisecond)
+    $now = round($now, 3);
+  }
+  var_dump($now >= (int)$time);
 ?>
 --EXPECT--
 bool(true)
 
PHP Copyright © 2001-2021 The PHP Group
All rights reserved.
Last updated: Sat May 15 18:01:23 2021 UTC