0

ページの編集時にキャッシュされたバージョンをクリアするために、PHP で記述された当社の CMS は exec() を使用して、関連するすべてのキャッシュ ファイルを削除します。これらのファイルは常に「_lid45」という文字列を含むように名前が付けられます。たとえば、「45」はそのページの一意の識別子です。

実行文字列は次のようになります

rm ../cache/*_lid45[._]*

そのようなファイルが存在する限り、完全に機能します。存在しない場合、ユーザーには何も問題はありませんが、Apache エラー ログには次のような行が表示されます。

rm: cannot remove `../cache/*_lid45[._]*': No such file or directory

これが最悪の事態ではないことはわかっています。しかし、可能であれば、元のスクリプトにこれ以上負荷をかけずに、メッセージを削除してみたいと思います。たとえば、最初に「ls」を使用してそのようなファイルがあるかどうかを確認し、存在する場合にのみ削除することを考えましたが、キャッシュのサイズがかなりの場合があるため、「ls」は時々遅くなることがありますサーバー全体のパフォーマンスに顕著な影響を与えるポイントです!

何か案は?

4

1 に答える 1

2

rmの出力をto に送信するだけ/dev/nullです:

exec("rm ../cache/*_lid45['_]* > /dev/null 2>&1");

そして、エラーを抑制する必要があるすべての出力を抑制します。

出力リダイレクトについてあまり知らない場合は、これを読む価値があるかもしれません...

于 2011-09-12T15:36:12.287 に答える