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