2010-08-29 73 views
3

我遇到了一個問題,讓我陷入死衚衕,所以我轉向你!最近一個Symfony應用程序一直在渲染內部apache錯誤-500。刪除Symfony緩存後,網站恢復正常。經過一些進一步的調查,我發現「腳本標題的提前結束:php5」的錯誤。這個網站在1年內沒有出現過這樣的錯誤,我們也沒有對這個網站做任何改變,而且這種情況經常發生(每週一次)。以下是來自日誌文件。腳本標題提前結束:php5 Symfony產生內部服務器錯誤500

[Sat Aug 28 06:20:30 2010] [error] [client 206.131.184.1] Premature end of script headers: php5 

這封電子郵件也是最近從MT發送的,可能與我感覺可能與問題直接相關。

它引起了我們的注意,您的服務----.com已經在託管您的帳戶的集羣上生成了異常大量的文件系統鎖。不正確地利用NFS文件鎖定的網站或腳本通常會產生此錯誤,這會非常影響羣集對其他客戶的性能。這違反了我們的AUP,可在'http://mediatemple.net/company/legal/aup_general.php'找到。

我們跟蹤的文件鎖定問題提交以下文件正在被反覆地鎖定:

/domains/----.com/symfony/cache/frontend/prod/config/routing/symfony.routing。 configuration.cache /domains/----.com/symfony/cache/frontend/prod/config/routing/symfony.routing.data.cache

我們建議您立即爲腳本禁用文件鎖定,如果該選項可用(通常位於腳本的配置部分);或者使用不利用文件鎖定的不同腳本。此腳本將來的任何鎖定濫用可能會導致流量暫停到此域,以防止鎖定影響其他客戶。

如果您對此文件鎖定問題有任何疑問,或者不確定從何處開始禁用文件鎖定,請回復此票以獲得進一步幫助。

回答

1

最近我遇到了類似的問題。用APC替換文件緩存完全解決了我的問題。我需要替換sfFileCache for view_cache,i18n緩存和路由。

如果APC在您的服務器上不可用,那麼您可以輕鬆使用任何其他常用的加速器。

如何使用APC用symfony:http://www.zalas.eu/symfony-meets-apc-alternative-php-cache

+0

感謝您對@kuba的見解,我剛剛實施並希望獲得最好的服務。 – jeffreynolte 2010-09-02 01:12:19

+0

不要忘了寫,如果它幫助或沒有;) – 2010-09-02 16:05:34

+0

過了一段時間,該網站似乎工作得很好,這就做了伎倆。太感謝了!!對不起,我想確保網站已解決。 – jeffreynolte 2010-09-14 04:43:59

2

我認爲您可以安全地禁用Symfony的緩存鎖定方法read()lib/cache/sfFileCache.class.php的讀取。閱讀時,Symfony需要共享鎖。鎖定不是必需的,因爲Symfony使用臨時文件並在寫入時重命名。另外,在lib/log/sfFileLogger.class.php中,doLog()方法中的鎖定是不必要的,因爲寫入是原子的(單個fwrite()調用),並且文件以附加模式打開。

我還沒有測試過這些變化會如何影響Symfony。

「腳本標題過早結束」不是PHP錯誤消息。當後端(本例中爲PHP)不發送標題時,Web服務器發出此消息。這很可能是因爲它在能夠做任何事情之前就死了。您應該找到PHP錯誤日誌並查看真實的錯誤消息。但是請注意,Symfony在函數調用中使用了很多@來進行錯誤抑制,因此您可能找不到任何東西。

+0

謝謝,我希望這與@ kuba的信息一致,我們應該沒問題。 – jeffreynolte 2010-09-02 01:12:59

+0

jmz +1爲您提供幫助。我確實解決了這個問題,沒有更多的文件鎖定,但我不認爲這是主要問題的根源。它肯定有助於解決問題的次要部分,但sFFileCache是​​罪魁禍首。再次感謝! – jeffreynolte 2010-09-14 04:46:16

10

它只如果您正在使用谷歌瀏覽器瀏覽,如果一個異常時發生。 在Monolog中有一些變化,他們啓用了「chromephp」。

在你config_dev.yml:

monolog: 
handlers: 
    main: 
     type: stream 
     path: %kernel.logs_dir%/%kernel.environment%.log 
     level: debug 
    firephp: 
     type: firephp 
     level: info 
    chromephp: 
     type: chromephp 
     level: info 

刪除整個chromephp塊和萬物的罰款。

+0

已解決問題:https://github.com/Seldaek/monolog/issues/206 – mYkon 2013-06-20 09:24:08

+0

這個答案與這個問題無關。這是一個symfony問題,而不是monolog - 考慮修改它。 – Raise 2013-06-20 21:45:54

+2

回答與此問題無關嗎?你知道Symfony嗎? Monolog是symfony自帶的默認捆綁軟件,當然,它是相關的! – mYkon 2014-03-04 09:18:14

相關問題