fork+exit+php,php实现简单的守护进程创建、开启与关闭操作
本文實(shí)例講述了php實(shí)現(xiàn)簡單的守護(hù)進(jìn)程創(chuàng)建、開啟與關(guān)閉操作。分享給大家供大家參考,具體如下:
前提要安裝有pcntl擴(kuò)展,可通過php -m查看是否安裝
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);
啟動
關(guān)閉
頂一下
(0)
100%訂閱
回復(fù)
踩一下
(0)
100%
總結(jié)
以上是生活随笔為你收集整理的fork+exit+php,php实现简单的守护进程创建、开启与关闭操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php逗号为什么比点号快,[PHP]
- 下一篇: java 时间api源码,时间API(示