scratch

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 33  →  ?path2? @ 34
/quickload/inc/functions.php
@@ -3,29 +3,64 @@
###########################################################################
## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
###########################################################################
function atomized_put_contents($file, $data)
function atomized_put_contents($file, $data, $block = 1)
{
$fp = fopen($file, "w+");
if (flock($fp, LOCK_EX)) {
fwrite($fp, $data);
fflush($fp);
flock($fp, LOCK_UN);
$f = fopen($file, 'a');
if (!$f || !flock($f, LOCK_EX | LOCK_NB, $block) || $block)
return;
ftruncate($f, 0);
fwrite($f, $data, strlen($data));
flock($f, LOCK_UN);
fclose($f);
}
###########################################################################
## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
###########################################################################
function atomized_get_contents($file, $block = 1)
{
$f = fopen($file, 'r+');
if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
return;
$s = get_file_size($file);
if ($s == 0) {
flock($f, LOCK_UN);
fclose($f);
return;
}
fclose($fp);
$c = fread($f, $s);
flock($f, LOCK_UN);
fclose($f);
return $c;
}
 
###########################################################################
## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
###########################################################################
function atomized_get_contents($file)
function get_file_size($file, $block = 1)
{
$fp = fopen($file, "r+");
$ct = '';
if (flock($fp, LOCK_SH)) {
if (filesize($file)) {
$ct = fread($fp, filesize($file));
$f = fopen($file, 'r+');
if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
return;
$s = 1073741824;
$i = 0;
fseek($f, 0, SEEK_SET);
do {
fseek($f, $s, SEEK_CUR);
 
if (fgetc($f) === false) {
fseek($f, -$s, SEEK_CUR);
$s = (int)($s / 2);
continue;
}
flock($fp, LOCK_UN);
}
fclose($fp);
return $ct;
fseek($f, -1, SEEK_CUR);
$i += $s;
} while ($s > 1);
 
while (fgetc($f) !== false)
$i++;
flock($f, LOCK_UN);
fclose($f);
return $i;
}