2

我读到我可以将 app/cache 或 app/logs 用于 tmp 文件,但感觉不对,因为除非我自己这样做,否则它们不会被删除。

例如,我需要在一个文件中存储一个日期(我不想为此使用数据库),我只需要它在那里 2 或 3 天。

我能做些什么?

4

2 回答 2

2

让 Web 服务器在包中编写并不是一个好习惯。你可以这样做,但你必须处理权限,它会带来安全风险......

为什么不使用定期清理的 /tmp(在 UNIX 服务器上)或您自己的 tmp 目录,如 /home/ChocoDeveloper/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 回答