防止鸡群造成的死锁

Max*_*mus 5 php 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);
}
Run Code Online (Sandbox Code Playgroud)

我无法使用LOCK_NB,因为它无法在Windows上运行.如果少于13个进程同时执行上述代码,则代码可以正常工作.我如何应对这种僵局?

Cou*_*Web 1

海伊

尝试用file_put_contents():

<?php

$file = 'file.txt';

$str = "some text\n";

file_put_contents($file, $str, FILE_APPEND | LOCK_EX);

?>