我有一個與此處所述類似的設定。唯一的區別是我正在管道中構建整個專案。這運行沒有問題,代碼部署到服務器沒有任何問題。Deployer 為該版本創建一個新檔案夾,并將“當前”檔案夾符號鏈接到這個新版本。我還確保為目標服務器上的插件運行更新命令并多次清除快取。類似于此部署程式配方。這一切順利進行。
不過,我不知所措的是,對專案/插件所做的實際更改可能需要數小時才能顯示出來。例如:升級 Shopware 版本時,部署后管理員仍會顯示舊版本。
經過進一步調查,我還發現快取仍在前一個版本的目錄中寫入(或者如果在短時間內發生多個部署,則回傳幾個版本)。
似乎 Shopware/Symfony 正在將“當前”檔案夾的符號鏈接決議為該版本的實際路徑并將其存盤/快取在某處。因此,當發布新版本時,它只是繼續使用舊版本的路徑。
到目前為止我已經嘗試過:
將 PROJECT_ROOT 環境變數設定為“當前”檔案夾。不幸的是,這在部署期間運行資料庫遷移時會出現問題。
部署后運行 system:update:finish 命令。
部署后洗掉整個快取目錄。
有沒有人遇到過類似的問題并且知道如何解決這個問題?等待數小時讓新部署在生產環境中“啟動”顯然是不可行的。
uj5u.com熱心網友回復:
請參閱我對 Julien B 評論的回答。原來 opcache 沒有正確清除。
我正在使用托管云服務器,我無權通過命令列(僅通過控制面板)重新啟動服務器。重新啟動整個服務器似乎也有點矯枉過正。我確實有權清除 opcache。事實證明這是問題所在。我已經嘗試過了,但由于某種原因,它并不總是能正確清除快取,所以現在我只需在部署后清除兩次,更改就會生效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460449.html
