Browse Source

use flock when write bitcoin list file

pull/286/head^2^2
kevin 10 years ago
parent
commit
62468c81bf
1 changed files with 21 additions and 3 deletions
  1. 24
      scripts/generate.php

24
scripts/generate.php

@ -67,11 +67,29 @@ function dump_for_ss_server($exist_txs) {
$address[] = $_tx['address'];
}
$str = implode("\n", $address)."\n";
LOGI("try dump ".count($address)." address to ss_server_file");
LOGI("dump ".count($address)." address to ss_server_file");
if (file_put_contents($_CFG['ss_server_file'], $str) == false) {
LOGI("write file fail: {$_CFG['ss_server_file']}");
$exist = file_exists($_CFG['ss_server_file']);
$fp = fopen($_CFG['ss_server_file'], $exist ? "r+" : "w");
if (!$fp) {
LOGI("write file failure: {$_CFG['ss_server_file']}");
return;
}
// use flock when write file
for ($i = 0; $i < 3; $i++) { // try 3 times if need
if (!flock($fp, LOCK_EX | LOCK_NB)) {
sleep(3);continue;
}
ftruncate($fp, 0);
fwrite($fp, $str);
fflush($fp);
flock($fp, LOCK_UN);
LOGI("write file success: {$_CFG['ss_server_file']}");
break;
}
fclose($fp);
}

Loading…
Cancel
Save