php发展

首页 » 常识 » 诊断 » PHP编程手把手教你编写PHP守护进
TUhjnbcbe - 2022/7/18 17:42:00
辽宁白癜风医院 http://m.39.net/pf/a_5824577.html
甚么是保护历程

保护历程(daemon)即是向来在靠山运转的历程(daemon)。保护历程时常有下列几个特性:

1.靠山运转。

2.没有管束末端,末端名配置为?号:也就象征着没有stdin0、stdout1、stderr2。

3.父历程不是用户创立的历程,init历程也许systemd(pid=1)以及用户人为启动的用户层历程通常以pid=1的历程为父历程,而以kthreadd内核历程创立的保护历程以kthreadd为父历程。

4.保护历程通常是会话首历程、组上历程。

5.做事目录为(根目录),主如果为了避免占用磁盘致使无奈卸载磁盘。

哄骗处景

保护历程通常用于监控其余程序运转景况和履行按时职责。

创立保护历程

要创立一个保护历程,通常停止下列环节:

假若是单例保护历程,联合锁文献和kill函数探测能否有历程曾经运转。

umask打消历程自身的文献掩码配置,也即是配置Linux文献权力,通常配置为,这是为了避免子历程创立一个不能拜访的文献(没有确实分派权力)。此流程并非肯定,假若保护历程不会创立文献,也也许不点窜。

fork出子历程,父历程退出。云云子历程肯定不是组上历程(历程id不即是历程组id)。

子历程移用setsid新建会话(使子历程变成会话首历程、组上历程,并断开末端)。

假若是单例保护历程,将pid写入到纪录锁文献,通常为/var/run/xxx.pid。

切换做事目录到根目录,这是为了避免占用磁盘形成磁盘不能卸载。因而也也许改到其余目录,唯有保证目录地址磁盘不会半途卸载。

重定向输入输入差错文献句柄,将其指向/dev/null。

上面以PHP的实行方法为例来阐述。在阐述以前先引见几个PHP函数。下列:

pcntl_fork:在今朝历程内创立一个子历程。胜利时,在父历程履行线程内返回形成的子历程的PID,在子历程履行线程内返回0。失利时,在父历程高低文返回-1,不会创立子历程,而且会激发一个PHP差错。

posix_setuid:配置今朝历程的操纵用户

posix_setgid:配置今朝历程的操纵用户所属分组

getmypid:猎取今朝历程id

posix_kill:向指定历程发送历程记号

pcntl_signal:装置一个记号处置器

system:履行外部程序,而且显示输出

1、启动保护历程2、中止保护历程

中止保护历程,唯有读取保护历程的pid文献,而后移用PHP函数posix_kill(pid,9),着末将该文献节略,便可。下列:

3、重启保护历程

重启保护历程,即是给保护历程发送SIGHUP记号。发送SIGHUP记号,既也许经过Linux吩咐kil发送kill-sSIGHUP,也也许经过PHP库函数posix_kill(posix_getpid(),SIGUSR1)实行。下列:

4、完好代码注意事故

1、不要哄骗超等用户启动保护历程,由于云云一旦由于程序呈现缺点被骇客管束,侵犯者只可接受运转权力,而无奈赢得超等用户权力。

2、保护历程只可运转一个,不能同时开启多个。

好啦,这日萌萌的干货就分享到这啦

假若你想占有更多进修与相易的时机

想与更多的大神切磋和征询阅历

连忙增加下方

1
查看完整版本: PHP编程手把手教你编写PHP守护进