你要先了解heroku平台的設計原則
才有辦法設計出符合這個平台的應用程式
http://12factor.net/
這是heroku創辦人提出的12factor
如果一個應用程式依照這12個原則去設計
那麼將可以更容易地被scale或是部署在不同的環境
你的問題解決方式很簡單,也是heroku建議的方式
就是所有應用程式相關的設定,都應該透過環境變數的方式去設定
https://devcenter.heroku.com/articles/config-vars
像是資料庫,或是add-on的設定
而dyno本身的設計必須是stateless的
也就是不應該有任何的狀態資料(session, file等)被儲存
file應該透過第三方平台去存取
session則應寫入資料庫或是透過像memcached來做分散式快取
這是因為dyno的設計,是建構在硬體可能隨時壞掉的前提之上
因此stateless的特性,讓dyno不儲存任何狀態
可以在dyno crash的時候,重新啟動一個dyno來服務
另外,修正一下你的說法,
並不是一個request進來才會產生一個dyno,
dyno在你push code到heroku時就會產生了
如果你只有一個dyno, 才會有sleep的效應
也就是你說的,太久沒用被卸載來減輕平台本身的負擔
當"第一個"request進來,才會再產生一個dyno
如果你有兩個dyno, 就不會sleep
但是兩個dyno的狀況下,就要讓session可以在不同dyno之間同步
你遇到的不是平台的問題 而是它的設計就是如此
※ 引述《jimmytzeng (jimmytseng)》之銘言:
: 各位大大好
: 小弟最近再使用Heroku 進行Jommla的佈署
: 但是遇到一些問題
: 因為Heroku為了減少server負載的使用量,設計成當有request進來時,才會產生一個DYNO
: (好像再google cloud platform裡叫作instance)
: 而第一次再這個DYNO進行Joomla的初始化的時候(就是再web上進行設定那步驟), 其設定檔(configruation.php)似乎只儲存在這個DYNO
: 當這個DYNO隨著時間被關閉後, 此設定檔或是安裝的模組就隨著此DYNO的消失而消失...
: 如此當下次DYNO被產生的時候,又要重新一次去進行Joomla的設定....
: 有大大有相關經驗解決類似這種問題嗎?