Core
3.2
PHP API documentation
Main Page
Related Pages
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Pages
flock.php
Go to the documentation of this file.
1
#!/usr/bin/env php
2
<?php
3
/*
4
* @author Anakeen
5
* @package CORE
6
*/
7
/**
8
* Mimic util-linux's flock behaviour to lock on a file and execute a command.
9
*/
10
11
main
($argv);
12
13
function
usage
($me)
14
{
15
$msg = <<<EOF
16
17
Usage:
18
19
$me <lockfile> <command>
20
21
22
EOF;
23
printerr
($msg);
24
}
25
26
function
main
(&$argv)
27
{
28
$me = array_shift($argv);
29
if
(count($argv) < 2) {
30
usage
($me);
31
exit
(64);
32
}
33
$lockfile = array_shift($argv);
34
$fh = fopen($lockfile,
'c+'
);
35
if
($fh ===
false
) {
36
printerr
(sprintf(
"Error: cannot open lock file '%s'.\n"
, $lockfile));
37
exit
(66);
38
}
39
if
(flock($fh, LOCK_EX) ===
false
) {
40
printerr
(
"Error: failed to get lock.\n"
);
41
exit
(1);
42
}
43
$cmd
= join(
' '
, $argv);
44
passthru(
$cmd
,
$ret
);
45
flock($fh, LOCK_UN);
46
exit
(
$ret
);
47
}
48
49
function
printerr
($msg)
50
{
51
file_put_contents(
'php://stderr'
, $msg);
52
}
printerr
printerr($msg)
Definition:
flock.php:49
$ret
$ret
Definition:
fdl_export1nf.php:91
$cmd
foreach($argv as $arg) $cmd
Definition:
Api/freedom_import.php:35
usage
usage($me)
Definition:
flock.php:13
exit
switch($command) exit
Definition:
checkVault.php:46
main
main(&$argv)
Definition:
flock.php:26
← centre documentaire
© anakeen