crontab 啓動的後臺PHP進程在消費REDIS鍵過期通知時消息不能正常入庫


問題:crontab 啓動的PHP消費REDIS鍵過期通知時消息不能正常入庫

環境:PHP5.6 THINKPHP3 REDIS2.8

分析:

   在SSH終端啓動PHP消費進程可以正常消費,而通過crontab 命令定時檢測消費進程是否存活的方式啓動i消費進程不能正常消費,說明問題在crontab 導致程序的運行環境出現了變化。

解決步驟:
  1.在運行的關鍵部分輸出日誌,並在crontab 的對應命令後加輸出重定向 >> /home/aa.log。

  2.發現消費端可以收到通知消息,但消費數據沒有入庫。

  3.繼續定位,發現在過濾待處理鍵的名稱處的一處宏定義的內容與預期不符,該宏定義是服務器的IP地址的HASH值,而此時通過$_SERVER獲取的服務器IP爲空,不能拿到真實本機的IP地址,導致在過濾鍵名時被過濾。

  4.將基於IP過濾改用其它過濾策略,解決。

根因:crontab運行模式下不能通過$_SERVER獲取本機IP

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章