【環境】CENTOS6.3 + wdcp(php5.3)php
【症狀】可正常加入隊列,但不執行隊列
html
【緣由】大部份都是用戶權限形成linux
【原理】web
Ecstore2.0的導入導出、發送郵件、平常清理備份等任務操做,都經過用入任務隊列,而後採用LINUX的CRON任務調試定時來執行並清空隊列。服務器
【方法】測試
第一步:測試linux環境的cron是否能被正常執行,從root用戶開始spa
#root身份登錄 crontab -uroot -e #輸入:每隔一分鐘向test文件寫入當前時間,保存退出 */1 * * * * date>>~/test #重啓cron服務 service crond restart #監視cron日誌 tail -f /var/log/cron #監視test變化 tail -f ~/test
如不能執行,確認cron服務是否安裝和啓動,具體方法就很少說了,自行GOOGLE吧。
第二步:確認 www 用戶可正常執行計劃任務調試
#root身份登錄 crontab -uwww -e #輸入:每隔一分鐘向test文件寫入當前時間,保存退出 */1 * * * * . /etc/profile;/bin/sh date>>~/test #重啓cron服務 service crond restart #監視cron日誌 tail -f /var/log/cron #監視test變化 tail -f ~/test
www用戶的文件中,命令前加了「. /etc/profile;/bin/sh」,這是由於www沒有載入環境變量。rest
第三步:修改www的用戶配置,wdcp/wdlinux中 www用戶的主目錄默認爲/dev/null,我這裏改成/home/www,並賦於www用戶讀寫權限。日誌
#更改用戶主目錄(執行前先確認www用戶的UID,cat /etc/passwd)
#須要先中止WEB服務,不然會提示www用戶已登錄(usermod: user www is currently logged in)
usermod -d /home/www -u 1000 www #啓動web服務器,從新償試第二步
第四步:修改www用戶的任務配置文件(配置文件以用戶名命名存放在 /var/spool/cron)
crontab -uwww -e */1 * * * * . /etc/profile;/bin/sh /www/web/aaa_com/public_html/script/queue/queue.sh>/dev/null */1 * * * * /www/web/aaa_com/public_html/script/crontab/crontab.php /www/wdlinux/wdphp/bin/php>/dev/null
#重啓cron服務,service crond restart
注:當你用 tail -f /var/log/cron 發現任務在重複執行時,使用 ps aux |grep cron* 查看是有多個cron進程,若是有kill掉就能夠了
基本完工,就這麼多了。在此以前,最好先以root手工執行 /www/web/aaa_com/public_html/script/queue/queue.sh,查看是否成功。
若是導出任務執行正常,可是下載的文件爲0字節,或發現並未在FTP目錄中建立導出文件,能夠移步【這裏】