evn
- suse 11
- php v5.2.13
shell
#!/bin/bash
PROG="PHP Daemon"
PHP_CODE="/home/www/scripts/Daemon.php"
test -x $PHP_CODE || exit 0RETVAL=0
. /etc/rc.status
rc_reset
case "$1" in
start)
echo -n "Starting $PROG"
startproc $PHP_CODE
rc_status -v
;;
stop)
echo -n "Shutting down $PROG"
killproc -TERM $PHP_CODE
rc_status -v
;;
restart)
echo -n "Restarting service $PROG"
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for service $PROG"
checkproc $PHP_CODE
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
rc_exit
php (第一行 #!/home/php/bin/php 一定要加)
#!/home/php/bin/php
?php
try {
$dest = Default_Model_Medium::AMQ_DNAME;
$con = new Stomp(AMQ_URL);
$con->setReadTimeout(300); // 設定每 5 分鐘檢查訊息
$con->connect();
$con->subscribe('/queue/'.$dest);
while (true) {
$msg = $con->readFrame();
if (empty($msg)) {
Util_Reporter::log("wait amq server…", '/home/logs/php/api.log');
continue;
}
$msgBody = json_decode($msg->body, true);
$con->ack($msg);
if ($msgBody==null) {
Util_Reporter::log("msgBody is null", '/home/logs/php/vlog_api.log');
} else {
// 主程式放這裡
}
}
$con->disconnect();
} catch (StompException $e) {
Util_Reporter::log("StompException:".$e->getMessage(), '/home/logs/php/vlog_api.log');
exit;
}
?
啟動指令
su wwwrun -c 'sh /home/www/HiNet_Vlog/scripts/CloudboxConsumer.sh start >> /home/logs/php/vlog_api.log' su wwwrun -c 'sh /home/www/HiNet_Vlog/scripts/CloudboxConsumer.sh stop' su wwwrun -c 'sh /home/www/HiNet_Vlog/scripts/CloudboxConsumer.sh status'
以上, 這樣就可以 run 了
但不知是否程式哪裡沒寫好, daemon 會一直死掉....
暫時只好寫個 cron 用 ps 去檢查, 若 daemon 死掉了, 就再自己啟動.....
cf : http://www.godlikemouse.com/2011/03/31/php-daemons-tutorial/
但不知是否程式哪裡沒寫好, daemon 會一直死掉....
暫時只好寫個 cron 用 ps 去檢查, 若 daemon 死掉了, 就再自己啟動.....
cf : http://www.godlikemouse.com/2011/03/31/php-daemons-tutorial/
跑了幾天, 結果 service 會一直掛...
回覆刪除只好改回原本的執行方式,
以 shell 來控制 /home/php/bin/php {code} 比較穩...
可以參考 http://blog.darkhero.net/archives/406
回覆刪除