我正在尝试模拟繁忙站点上的文件写入.我写了下面的代码,最终冻结了计算机.
$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个进程同时执行上述代码,则代码可以正常工作.我如何应对这种僵局?
海伊
尝试用file_put_contents():
<?php
$file = 'file.txt';
$str = "some text\n";
file_put_contents($file, $str, FILE_APPEND | LOCK_EX);
?>
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |