php 透過 mqtt 進行發送與監聽
install
- env : mac osx, php 7.0.8
- 確定已安裝 mosquitto 在 mac 中 : brew install mosquitto
- 取得 path : /usr/local/Cellar/mosquitto/1.4.9/lib/libmosquitto
- 下載 github : https://github.com/mgdm/Mosquitto-PHP
- 產生 mosquitto.so
cd Mosquitto-PHP
phpize
./configure --with-mosquitto=/usr/local/Cellar/mosquitto/1.4.9/lib/libmosquitto
- make
- sudo make install
- 得到 mosquitto.so 安裝的位置
- 開啟 php.ini,設定 extension=mosquitto.so 與驗證
- MAMP,請用套件管理 php.ini
- 用
phpinfo();
- 用
- 手動
php --ini
cat {path}/php.ini | grep extension_dir
- 將 mosquitto.so 放入此路徑
- 在 php.ini 中設定 extension=mosquitto.so
- 驗證
php -i | grep mosquitto
- MAMP,請用套件管理 php.ini
測試
- https://github.com/mqtt/mqtt.github.io/wiki/mosquitto-php
問題
- 訂閱問題
- 若針對所有的 topic 進行訂閱,則開兩台 instance,就會收到兩次,無法做 loading balance….所以還是分段訂閱會比較清楚
- 當有新的必須訂閱的事件進來…就產生一個新的監聽 client(php sub.php topic),訂閱的 topic 寫到 json 中。(or mongodb)
- 若取消該訂閱,則從 json 中移除該 topic
- 判斷 process 的狀態,bash file + crontab,定時檢查掛載上去的 sub topic process 與 json file 是否一致
- 用 php or cmd:mosquitto?
- 優點在 今天 sub 進來,直接處理,不用在 bash 這邊取得監聽內容後,丟給 php 處理