[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r15126 - gauger/web
From: |
gnunet |
Subject: |
[GNUnet-SVN] r15126 - gauger/web |
Date: |
Fri, 29 Apr 2011 18:33:50 +0200 |
Author: bartpolot
Date: 2011-04-29 18:33:50 +0200 (Fri, 29 Apr 2011)
New Revision: 15126
Modified:
gauger/web/io.php
Log:
Added file locking to avoid concurrency problems
Modified: gauger/web/io.php
===================================================================
--- gauger/web/io.php 2011-04-29 13:34:36 UTC (rev 15125)
+++ gauger/web/io.php 2011-04-29 16:33:50 UTC (rev 15126)
@@ -81,11 +81,13 @@
if(empty($host) || empty($counter)) return get_range_global();
$f = @fopen("$DATADIR$host/$counter.dat", 'r');
if ($f === false) return get_range_global();
+ flock($f, LOCK_SH);
$b = false;
while (($buffer = fgets($f, 512)) !== false) {
if($b === false) {$b = explode(' ', $buffer); $b = $b[0]; }
$e = $buffer;
}
+ flock($f, LOCK_UN);
fclose($f);
$e = explode(' ', $e);
$e = $e[0];
@@ -104,6 +106,7 @@
global $DATADIR;
$lm = false;
$f = @fopen("$DATADIR$h/$g.dat", 'r');
+ flock($f, LOCK_SH);
if ($f === false) return 1;
while (($buffer = fgets($f, 512)) !== false) {
$l = explode(' ', $buffer);
@@ -111,6 +114,7 @@
if($lm === false || $l[1] > $lm) $lm = $l[1];
}
}
+ flock($f, LOCK_UN);
fclose($f);
return $lm ? $lm : 1;
}
@@ -241,6 +245,7 @@
function add_data_to_file($filename, $rev, $data) {
$f = @fopen("$filename", 'r+');
if ($f === false) return false;
+ flock($f, LOCK_EX);
$size = filesize($filename);
$pos = find_position($f, $size, $rev);
@@ -250,6 +255,7 @@
fseek($f, $pos, SEEK_SET);
fwrite($f, "$rev $data\n");
fwrite($f, $buffer);
+ flock($f, LOCK_UN);
fclose($f);
return $pos;
}
@@ -257,6 +263,7 @@
function recalculate_data($filename, $rev, $pos) {
$f = @fopen("$filename", 'r+');
if ($f === false) return false;
+ flock($f, LOCK_SH);
$size = filesize($filename);
fseek($f, $pos, SEEK_SET);
$r = get_line($f);
@@ -282,12 +289,15 @@
$stddev += pow($avg - $val, 2);
}
$stddev = sqrt($stddev/$c);
+ flock($f, LOCK_UN);
+ fclose($f);
return array($avg, $stddev);
}
function write_data_to_summary($filename, $rev, $data) {
$f = @fopen("$filename.dat", 'r+');
if ($f === false) return false;
+ flock($f, LOCK_EX);
$size = filesize("$filename.dat");
$pos = find_position($f, $size, $rev);
fseek($f, $pos, SEEK_SET);
@@ -304,6 +314,7 @@
fwrite($f, "$rev " . $data[0] . ' ' . $data[1] . "\n");
fwrite($f, $rest);
ftruncate($f, ftell($f));
+ flock($f, LOCK_UN);
fclose($f);
return true;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r15126 - gauger/web,
gnunet <=