1

PHP では、複雑な結果変数をストックするためにキャッシュ ファイルを作成します。1 つの変数、1 つのキャッシュ ファイル。よくできました。

問題はキャッシュの期間にあります。今のところ、タイムアウトと変数をファイルに入れましたが、タイムアウトを確認するためにファイルを開く必要があるため、最適化されていません。

(可能であれば)ファイルプロパティ(関数filemtime()で最後に変更された日付など)のタイムアウトを確認したい。カスタム プロパティをファイルに追加できますか?

もう 1 つの方法は、私のお気に入りの解決策ではなく、ファイル名にタイムアウトを追加することです。

[編集]

final class Cache_Var extends Cache {

  public static function put($key, $value, $timeout=0) {
    // different timeout by variable (if 0, infinite timeout)
  }

  public static function get($key) {
    // no timeout to get a var cache
    // return null if file not found, or if timeout expire
    // return var otherwise
  }
}
4

1 に答える 1

2

filectime()本当にあなたを助けることができます

$validity = 60 * 60; // 3600s = 1 hour
if(filectime($filename) > time() - $validity) {
  // cache is valid
} else {
  // cache is invalid: recreate it
}

まさにこのメカニズムを使用するキャッシング fdrameworks がいくつかあります。

編集:touch()キャッシュファイルの変更時間を設定するために 使用するよりも、キャッシュアイテムごとに異なるタイムアウトが必要な場合。変更時間を将来の値に設定してfilectime、現在の時間と直接比較することもできます。

final class Cache_Var extends Cache {

  public static function put($key, $value, $timeout=0) {
    // different timeout by variable (if 0, infinite timeout)
    // ...
    touch($filename, time() + $timeout);

    // For static files with unlimited lifetime I would simply store
    // them in a separate folder
  }
}
于 2016-02-02T10:30:39.360 に答える