2011-05-18 89 views
1

我使用LAMP CodeIgniter作爲我的項目之一;版本由SVN控制。每當我在www目錄中執行svn export file:///svnrepo/project/trunk/www . --force,然後重新加載網頁時,它都會變成空白。svn導出使我的頁面空白

該網站只有在我做service httpd restart(使用CentOS 5)後纔會顯示。

我希望能夠在未來使用Phing構建腳本執行svn導出,並且我不希望每次執行構建時都需要獲取root權限並重新啓動apache。

是我遇到的一個常見問題?我如何解決它,而無需重新啓動Apache?

編輯: 好像之前有人有這個問題:http://codeigniter.com/forums/viewthread/181642/

+0

我環顧四周。這可能是APC緩存問題。 – samxli 2011-05-27 03:58:09

+0

我可以證實這一點。禁用APC緩存解決了問題。我通過我的軟件包管理器安裝了APC。也許通過PECL安裝會避免這個問題?目前我只是在svn導出後重新啓動web服務器。 – mdgrech 2011-09-07 00:01:29

+0

白頁=致命錯誤。找出致命錯誤並編輯您的帖子。 – 2011-09-07 16:13:18

回答

0

好吧我it.SVN維持其拋出了APC的緩存文件最後修改時間。所以爲了解決它,我們在運行SVN導出後更新所有文件的最後修改時間。這是我最後的腳本:

#!/bin/sh 
svn export --force file:///home/steve/repo/exmaple/trunk \ 
/home/steve/public_html/example.com/public/ 
find /home/steve/public_html/exmaple.com/public | xargs touch 

你可以找到更多的細節here

+0

我似乎得到了「觸摸:無效選項 - 'T'」作爲最後找到管道「xargs觸摸」的結果... – Rimer 2013-03-10 22:57:21

0

另一種解決方案是在apc.ini中設置apc.stat = 0(reference),然後使用apc_clear_cache()reference)強制刪除操作碼高速緩存。

這個解決方案真棒的是,當apc.stat設置爲0時,它會禁用每個請求的檢查以確定文件是否已被修改。這會帶來巨大的性能提升。

此外,使用apc_clear_cache()來清除APC緩存往往會導致更簡潔的構建。我遇到了一些不可靠的競爭條件,在這些條件下,某些文件將被構建出來,並依賴於尚未構建的其他文件。這導致了一大堆致命錯誤。唯一需要注意的是apc_clear_cache()需要通過apache運行,所以你需要實現一個wget或類似的東西。

+0

如果我關閉apc.stat,這是否意味着緊急更改該代碼將導致APC不承認更改?因此,我必須在每次對代碼進行小改動時清除緩存(而不需要重新構建整個構建)? – samxli 2011-09-08 06:00:21

+0

這是正確的。這種方法的缺點是你需要執行一個完整的構建(svn export + cache clear),對於每個php變化,無論多麼微小。對於不經常建站的站點(每天幾次)非常理想。如果您每隔幾分鐘對生產網站進行更改,這不是一個好方法。但這取決於你的工作流程。 – 2011-09-08 14:37:06