因此,我正在安靜地構建一個基於Symfony 3的大型SAAS Web應用程序。大約有10-20個應用程序,現在已經發展到超過500多個應用程序。單獨的供應商目錄已經是每個應用程序150 + MB的大小。帶共享代碼庫的多實例symfony應用程序
所有這些應用程序都有自己的數據庫。我想保持這種方式。不過,我相信如果一些代碼被共享,這將是很好的。以供應商和src目錄爲例。這在每個應用程序中都是相同的,但是它們都是在OpCache中單獨「加載」的。我相信從資源的角度來看,如果這些目錄是共享的,那將是最好的。
Composer和Symfony似乎都不支持共享目錄的多實例應用程序。然而,我想知道如果有人有任何線索來實現我的想法或者我的計劃不可行?
配置對於每個應用程序(parameters.yml)是不同的,並且web目錄在每個應用程序中包含不同的樣式表。所以他們需要與其他人分開。
我一直在考慮爲此使用環境設置,但我們有環境「測試」,「開發」,「應用程序1」,「應用程序2」等,感覺不對。config_prod.yml突然也變得無法使用。
我的思維方式錯了嗎?有關如何實現這一目標的任何建議?或者我應該去一個完整的單獨實例?
(我們的應用程序使用的是SemVer,如果我們有版本1.0.0,版本1.1.0的共享代碼,那麼它甚至會很好,所以這甚至是最上面的一個層次,但也許這是下一步)
編輯: 澄清更多; 實質上你可以說web目錄和var目錄都不可共享。 Web目錄包含自定義樣式表,並且是主要的入口點。 var目錄包含緩存文件,根據其數據庫設置,每個應用程序的緩存文件都不相同。 最後,您還有自定義參數文件,每個應用程序都有不同的數據庫憑據。
我嘗試過符號鏈接,但作曲家對此並不滿意。另外,使用符號鏈接時,工作目錄始終是實際使用的目錄,而不是實際的符號鏈接目錄。 我也嘗試使用應用程序的vhost文件中的自定義設置。覆蓋高速緩存和內核目錄是可能的,但是你又失去了你所符合的實際目錄。
只是一個想法:Opcache使用真正的路徑,你可以替換文件,如果相同的符號鏈接到「父母」。在作曲家安裝後腳本化,你可以從中解脫... – hakre
是的,我試過了。但是,作曲家不支持供應商目錄由多個應用程序符號鏈接。它可以在某個自動加載器中的某處保存路徑。 –
我不是指供應商文件夾,而是包中的代碼。而不是軟件包,但在該級別下的所有文件都是相同的。 Linke遞歸地比較兩個目錄樹,如果文件相同,則用符號鏈接替換它。 opcache然後將使用實際路徑。這必須在腳本中完成,以便可以通過根除供應商文件夾進行重置,使用composer重新安裝,然後重新運行compare&link腳本。 – hakre