scratch – Blame information for rev 81
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | <?php |
2 | |||
3 | ########################################################################### |
||
4 | ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ## |
||
5 | ########################################################################### |
||
34 | office | 6 | function atomized_put_contents($file, $data, $block = 1) |
12 | office | 7 | { |
34 | office | 8 | $f = fopen($file, 'a'); |
9 | if (!$f || !flock($f, LOCK_EX | LOCK_NB, $block) || $block) |
||
10 | return; |
||
11 | ftruncate($f, 0); |
||
12 | fwrite($f, $data, strlen($data)); |
||
81 | office | 13 | $t = filemtime ($file); |
34 | office | 14 | flock($f, LOCK_UN); |
15 | fclose($f); |
||
81 | office | 16 | return $t; |
34 | office | 17 | } |
37 | office | 18 | |
34 | office | 19 | ########################################################################### |
20 | ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ## |
||
21 | ########################################################################### |
||
22 | function atomized_get_contents($file, $block = 1) |
||
23 | { |
||
24 | $f = fopen($file, 'r+'); |
||
25 | if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block) |
||
26 | return; |
||
27 | $s = get_file_size($file); |
||
28 | if ($s == 0) { |
||
29 | flock($f, LOCK_UN); |
||
30 | fclose($f); |
||
31 | return; |
||
4 | office | 32 | } |
34 | office | 33 | $c = fread($f, $s); |
34 | flock($f, LOCK_UN); |
||
35 | fclose($f); |
||
36 | return $c; |
||
4 | office | 37 | } |
34 | office | 38 | |
4 | office | 39 | ########################################################################### |
40 | ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ## |
||
41 | ########################################################################### |
||
34 | office | 42 | function get_file_size($file, $block = 1) |
12 | office | 43 | { |
34 | office | 44 | $f = fopen($file, 'r+'); |
45 | if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block) |
||
46 | return; |
||
47 | |||
48 | $s = 1073741824; |
||
49 | $i = 0; |
||
50 | fseek($f, 0, SEEK_SET); |
||
51 | do { |
||
52 | fseek($f, $s, SEEK_CUR); |
||
53 | |||
54 | if (fgetc($f) === false) { |
||
55 | fseek($f, -$s, SEEK_CUR); |
||
56 | $s = (int)($s / 2); |
||
57 | continue; |
||
4 | office | 58 | } |
34 | office | 59 | fseek($f, -1, SEEK_CUR); |
60 | $i += $s; |
||
61 | } while ($s > 1); |
||
62 | |||
63 | while (fgetc($f) !== false) |
||
64 | $i++; |
||
65 | |||
66 | flock($f, LOCK_UN); |
||
67 | fclose($f); |
||
68 | return $i; |
||
4 | office | 69 | } |