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
回覆刪除