shell監控PHP守護程序

2021-09-25 21:50:07 字數 1640 閱讀 6481

php指令碼以守護程序的方式,shell指令碼監控php指令碼是否工作,若php指令碼未工作,則啟動php指令碼。

cat run.php

<?php

dowhile

(true

);

控制台執行run.php

[sy@sy-pc daemon]$ php run.php &

[1] 7876

檢視是否執行,上文和下文得到的7868,是程序id。

[sy@sy-pc daemon]$ ps aux|grep run.php|grep -v grep

sy 7876 0.3 1.1 332044 20960 pts/0 s 23:11 0:00 php run.php

檢視日誌檔案

[sy@sy-pc daemon]$ tail -f log.txt

1565021046.4876 677680

1565021047.4909 677680

殺死程序

kill `ps aux|grep run.php|grep -v grep|awk ''`
為防止php指令碼意外不工作(意外退出),寫乙個shell指令碼,定時監控php指令碼的執**況,

shell監控指令碼的編寫,注意php二進位制檔案寫絕對路徑

vim /server/script/php_monitor.sh

#! /bin/bash

alive=

`ps aux|

grep run.php|

grep -v grep

|wc -l`if[

$ -eq 0 ]

;then

&1fi

#date +%y-%m-%d\ %h:%m:%s >> /wwwroot/sy.net/daemon/date.txt

為shell指令碼新增執行許可權

chmod +x /server/script/php_monitor.sh
新增計畫任務(每分鐘檢測一次)

[root@sy-pc ~]# echo '* * * * * /server/script/php_monitor.sh > /dev/null 2>&1' >> /var/spool/cron/root

[root@sy-pc ~]# tail -1 /var/spool/cron/root

* * * * * /server/script/php_monitor.sh > /dev/null 2>&1

開啟定時任務

centos 7

[root@sy-pc ~]# systemctl start crond
參考:

[1] 如何將我的php指令碼以守護程序的方式一直執行[db|ol]. .

[2] php使用redis作為訊息佇列–守護程序模式執行[db|ol]. .

[3] php兩種實現守護程序的方式[db|ol]. .

php守護程序

class daemon 啟動程序 return bool public function main this logmessage running.this isrunning true while this isrunning return true 停止程序 return void publi...

PHP守護程序

php也是可以直接進行守護程序的啟動與終止的,相對於shell來說會簡單很多,理解更方便,當然了php的守護程序要實現自動重啟還是要依賴於shell的crontab日程表,每隔一段時間去執行一次指令碼看指令碼是否需要重啟,如果需要則殺掉程序刪除runfile檔案,重新啟動並在runfile檔案中寫入...

PHP守護程序化

乙個守護程序通常補認為是乙個不對終端進行控制的後台任務。它有三個很顯著的特徵 在後台執行,與啟動他的程序脫離,無須控制終端。常用的實現方式是fork setsid fork 在glibc裡有乙個函式daemon。呼叫此函式,就可使當前程序脫離終端變成乙個守護程序,具體內容參見man daemon。p...