Предотвращение взаимоблокировки, вызванной flock

Я пытаюсь имитировать запись файла на загруженном сайте. Я написал следующий код, который в конечном итоге приводит к зависанию компьютера.

$loop = 10000;
$sleep = 500000;
$i =0;

while($i < $loop) {

    $mtime = microtime();
    $mtime = explode(" ",$mtime);
    $mtime = $mtime[1] + $mtime[0];
    $starttime = $mtime; 

    $handler = fopen($file,"a+");
    if($handler) {
    if (flock($handler, LOCK_EX)) {
        $mtime = microtime();
        $mtime = explode(" ",$mtime);
        $mtime = $mtime[1] + $mtime[0];
        $endtime = $mtime;
        $totaltime = ($endtime - $starttime); 

        fwrite($handler,"Script 1 took $totaltime secs\n");
    }

    flock($handler, LOCK_UN);
    fclose($handler);
}
$i++;
usleep($sleep);
}

Я не могу использовать LOCK_NB, потому что он не будет работать в Windows. Код работает нормально, если менее 13 процессов одновременно выполняют указанный выше код. Как мне справиться с этой тупиковой ситуацией?

5
задан Lightness Races with Monica 24 April 2011 в 17:24
поделиться