3

私は行き止まりになっている問題に直面しているので、今度はあなたに頼ります! 最近、Symfony アプリがダウンし、内部 apache エラー -500 が表示されました。Symfony のキャッシュを削除すると、サイトが復旧します。さらに調査したところ、「スクリプトヘッダーの早期終了: php5」というエラーが見つかりました。サイトはこのようなエラーを 1 年以上生成しておらず、このサイトに変更を加えていません。これは定期的に (週に 1 回) 発生しています。以下はログファイルからのものです。

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

このメールは MT からも最近送信されたもので、この問題に直接関係していると思われるものに関連している可能性があります。

お客様のサービス ----.com が、お客様のアカウントをホストしているクラスターで異常に多数のファイル システム ロックを生成していることが判明しました。NFS ファイル ロックを誤って使用する Web サイトまたはスクリプトは、多くの場合、このエラーを生成する可能性があり、他の顧客のクラスターのパフォーマンスに過度の影響を与えます。これは、' http://mediatemple.net/company/legal/aup_general.php 'で確認できる AUP に違反しています。

繰り返しロックされている次のファイルへのファイル ロックの問題を追跡しました。

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

オプションが利用可能な場合は、スクリプトのファイル ロックをすぐに無効にすることをお勧めします (多くの場合、スクリプトの構成セクションにあります)。または、ファイルのロックを利用しない別のスクリプトを使用してください。このスクリプトによる今後のロックの悪用は、ロックが他の顧客に影響を与えるのを防ぐために、このドメインへのトラフィックを一時停止する可能性があります。

このファイル ロックの問題について質問がある場合、またはファイル ロックを無効にする方法がわからない場合は、このチケットに返信してサポートを受けてください。

4

3 に答える 3

11

これは、Google Chrome でブラウジングし、例外がスローされた場合にのみ発生します。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 ブロック全体を削除すると、すべて問題ありません。

于 2013-06-20T09:04:32.677 に答える
2

lib/cache/sfFileCache.class.phpメソッドの読み取りに対してSymfonyのキャッシュロックを無効にしても安全だと思いますread()。symfonyは読み取り時に共有ロックを取得します。Symfonyは一時ファイルを使用し、書き込み時に名前を変更するため、ロックは必要ありません。また、書き込みはアトミック(シングルコール)であり、ファイルは追加モードで開かれるためlib/log/sfFileLogger.class.php、ロックインメソッドでは必要ありません。doLog()fwrite()

これらの変更がSymfonyにどのように影響するかはテストしていません。

「スクリプトヘッダーの早期終了」は、PHPのエラーメッセージではありません。バックエンド(この場合はPHP)がヘッダーを送信しない場合、Webサーバーはこのメッセージを発行します。これは、何かができるようになる前に死んでしまうことが原因である可能性が最も高いです。PHPエラーログを見つけて、実際のエラーメッセージを確認する必要があります。ただし、Symfonyは@関数呼び出しのエラー抑制に多くを使用するため、何も見つからない場合があることに注意してください。

于 2010-08-29T08:27:26.707 に答える
1

最近、私は同様の問題に遭遇しました。ファイルキャッシュをAPCに置き換えると、問題は完全に解決しました。view_cache、i18nキャッシュ、ルーティングのsfFileCacheを置き換える必要がありました。

サーバーでAPCが利用できない場合は、代わりに他の一般的なアクセラレータを簡単に使用できます。

symfonyでAPCを使用する方法:http ://www.zalas.eu/symfony-meets-apc-alternative-php-cache

于 2010-08-29T11:06:36.230 に答える