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