本文实例讲述了php实现简单的守护进程创建、开启与关闭操作。分享给大家供大家参考,具体如下:
前提要安装有pcntl扩展,可通过php -m
查看是否安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
<?php
class Daemon {
private $pidfile ;
function __construct() {
$this ->pidfile = dirname( __FILE__ ). '/daemontest.pid' ;
}
private function startDeamon() {
if ( file_exists ( $this ->pidfile)) {
echo "The file $this->pidfile exists.\n" ;
exit ();
}
$pid = pcntl_fork();
if ( $pid == -1) {
die ( 'could not fork' );
} else if ( $pid ) {
echo 'start ok' ;
exit ( $pid );
} else {
// we are the child
file_put_contents ( $this ->pidfile, getmypid ());
return getmypid ();
}
}
private function start(){
$pid = $this ->startDeamon();
while (true) {
file_put_contents (dirname( __FILE__ ). '/test.txt' , date ( 'Y-m-d H:i:s' ), FILE_APPEND);
sleep(2);
}
}
private function stop(){
if ( file_exists ( $this ->pidfile)) {
$pid = file_get_contents ( $this ->pidfile);
posix_kill( $pid , 9);
unlink( $this ->pidfile);
}
}
public function run( $argv ) {
if ( $argv [1] == 'start' ) {
$this ->start();
} else if ( $argv [1] == 'stop' ) {
$this ->stop();
} else {
echo 'param error' ;
}
}
}
$deamon = new Daemon();
$deamon ->run( $argv );
|
启动
1
|
php deamon.php start
|
关闭
1
|
php deamon.php stop
|
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/fangdong88/article/details/78624659