scratch – Diff between revs 13 and 34
?pathlinks?
Rev 13 | Rev 34 | |||
---|---|---|---|---|
Line 1... | Line 1... | |||
1 | <?php |
1 | <?php |
|
Line 2... | Line 2... | |||
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 | $f = fopen($file, 'a'); |
||
- | 9 | if (!$f || !flock($f, LOCK_EX | LOCK_NB, $block) || $block) |
||
- | 10 | return; |
||
- | 11 | ftruncate($f, 0); |
||
8 | $fp = fopen($file, "w+"); |
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) |
||
9 | if (flock($fp, LOCK_EX)) { |
20 | { |
|
- | 21 | $f = fopen($file, 'r+'); |
||
10 | fwrite($fp, $data); |
22 | if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block) |
|
- | 23 | return; |
||
- | 24 | $s = get_file_size($file); |
||
11 | fflush($fp); |
25 | if ($s == 0) { |
|
- | 26 | flock($f, LOCK_UN); |
||
- | 27 | fclose($f); |
||
12 | flock($fp, LOCK_UN); |
28 | return; |
|
- | 29 | } |
||
- | 30 | $c = fread($f, $s); |
||
13 | } |
31 | flock($f, LOCK_UN); |
|
- | 32 | fclose($f); |
||
14 | fclose($fp); |
33 | return $c; |
|
- | 34 | } |
||
15 | } |
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 | { |
|
- | 41 | $f = fopen($file, 'r+'); |
||
- | 42 | if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block) |
||
- | 43 | return; |
||
- | 44 | |
||
21 | $fp = fopen($file, "r+"); |
45 | $s = 1073741824; |
|
- | 46 | $i = 0; |
||
- | 47 | fseek($f, 0, SEEK_SET); |
||
22 | $ct = ''; |
48 | do { |
|
- | 49 | fseek($f, $s, SEEK_CUR); |
||
23 | if (flock($fp, LOCK_SH)) { |
50 | |
|
24 | if (filesize($file)) { |
51 | if (fgetc($f) === false) { |
|
- | 52 | fseek($f, -$s, SEEK_CUR); |
||
- | 53 | $s = (int)($s / 2); |
||
25 | $ct = fread($fp, filesize($file)); |
54 | continue; |
|
26 | } |
55 | } |
|
- | 56 | fseek($f, -1, SEEK_CUR); |
||
- | 57 | $i += $s; |
||
- | 58 | } while ($s > 1); |
||
- | 59 | |
||
27 | flock($fp, LOCK_UN); |
60 | while (fgetc($f) !== false) |
|
- | 61 | $i++; |
||
- | 62 | |
||
28 | } |
63 | flock($f, LOCK_UN); |
|
29 | fclose($fp); |
64 | fclose($f); |
|
30 | return $ct; |
65 | return $i; |