回覆以下的說明
你的函式也沒有用,因為 WinNT 32 核心運作的最小單位大約是 10+ 毫秒 (1,000 微秒),這使得 usleep() 函式形同虛設,因為 usleep() 使用的是系統提供的 C 函式 (在這個例子中是 kernel32.dll)。
你應該使用不依賴核心,而是專為精確測量設計的函式。
<?php
function usleep_win( $micro_seconds )
{
if ( @function_exists( "socket_create" ) && @function_exists( "socket_select" ) )
{
$false = NULL;
$socket = array( socket_create( AF_INET, SOCK_RAW, $false ) );
socket_select( $false, $false, $socket, 0, $micro_seconds );
return true;
}
else
{
return false;
}
}
?>
這個函式可以讓你程式休眠指定的微秒數,雖然我測量到它會有大約 5 微秒的誤差。
再次強調,這大部分取決於你系統的硬體。如果你*真的*需要精確到小於 10 微秒,你根本不應該使用 WinNT!