2

tmpファイルにはapp/cacheまたはapp/logsを使用できると読みましたが、自分でやらないと削除されないため、正しくありません。

たとえば、日付をファイルに保存する必要があり(このためにデータベースを使用したくない)、2〜3日間だけ保存する必要があります。

私に何ができる?

4

2 に答える 2

2

Webサーバーにバンドル内に書き込みをさせるのは良い習慣ではありません。あなたはそれを行うことができますが、あなたは許可に対処しなければならず、それはセキュリティリスクをもたらします...

定期的にクリーンアップされる/tmp(UNIXサーバー上)または/ home / ChocoDeveloper /tmpのような独自のtmpディレクトリとcronタスクを使用してクリーンアップしないのはなぜですか?

于 2013-01-17T11:04:14.580 に答える
2

申し訳ありませんが、これは正確な質問に対する答えではありませんが、データベースを使用したくない場合でも、一時ファイルに日付を保存せずにこれを実現するためのより良い方法があることをお勧めします。

RedisまたはMemcacheの使用を検討しましたか?これらの両方にSymfony2バンドルがあり、作業が少し楽になるはずですが、両方がサーバーにインストールされ、実行されていることを確認する必要があります。

たとえば、Redisを使用してこれを行う場合は、EXPIREコマンドを使用して、値(この場合は日付)が存在する期間を指定できます。大まかなアイデアは次のとおりです。

public function yourMethod()
{
    $date = $this->getDate();

    /* ... */
}

protected function getDate()
{
    /** @var $redis \Predis\Client */
    $redis = $this->container->get('snc_redis.default'); // TODO inject as a dependency

    $date = $redis->get('your_key');

    // Will be empty if requested after the key has expired.
    // Set a new date value in the key
    if (empty($date)) {
        $date = '2013-01-17 13:30:00'; // Not sure where you want to get this from
        $redis->set('your_key', $date);

        $secondsToLive = 259200; // 3 days
        $redis->expire('your_key', $secondsToLive);
    }

    return $date;
}
于 2013-01-17T13:36:03.770 に答える