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