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