PluginProbe ʕ •ᴥ•ʔ
JetBackup – Backup, Restore & Migrate / 3.1.18.8
JetBackup – Backup, Restore & Migrate v3.1.18.8
3.1.22.3 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.8.1 1.4.9 1.5.0 1.5.1 1.5.1.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.10 1.6.11 1.6.12 1.6.13 1.6.15 1.6.5.1 1.6.8.8 1.6.9 1.6.9.1 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7.5 2.0.8.7 2.0.9.11 2.0.9.14 2.0.9.15 2.0.9.6 2.0.9.7 2.0.9.9 3.1.10.7 3.1.11.1 3.1.12.3 3.1.13.4 3.1.14.17 3.1.15.4 3.1.16.1 3.1.17.5 3.1.18.10 3.1.18.8 3.1.18.9 3.1.19.8 3.1.20.3 3.1.21.3 3.1.7.9 3.1.9.2 trunk 1.1.90 1.1.91 1.2.0 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.4.2
backup / src / JetBackup / IO / Lock.php
backup / src / JetBackup / IO Last commit date
.htaccess 5 months ago Execute.php 5 months ago Lock.php 5 months ago Process.php 5 months ago index.html 5 months ago web.config 5 months ago
Lock.php
40 lines
1 <?php
2
3 namespace JetBackup\IO;
4
5 if (!defined( '__JETBACKUP__')) die('Direct access is not allowed');
6
7 class Lock {
8
9 private static $_files;
10
11 private static function _getFile($filename) {
12 if (!file_exists($filename)) touch($filename);
13 if (!isset(self::$_files[$filename])) self::$_files[$filename] = @fopen($filename, 'r');
14 return self::$_files[$filename];
15 }
16
17 private static function _closeFile($filename) {
18 if (!isset(self::$_files[$filename])) return;
19 @fclose(self::$_files[$filename]);
20 unset(self::$_files[$filename]);
21 }
22
23 public static function LockFile($filename, $block = false): bool {
24 if (($fd = self::_getFile($filename)) === false) return false;
25 $flag = LOCK_EX;
26 if (!$block) $flag |= LOCK_NB;
27 $wouldblock = 0;
28 $ret = flock($fd, $flag, $wouldblock);
29 if ((!$block && $wouldblock) || $ret === false) return false;
30 return true;
31 }
32
33 public static function UnlockFile($filename) {
34 if (
35 ($fd = self::_getFile($filename)) === false ||
36 flock($fd, LOCK_UN) === false
37 ) return;
38 self::_closeFile($filename);
39 }
40 }