我读到我可以将 app/cache 或 app/logs 用于 tmp 文件,但感觉不对,因为除非我自己这样做,否则它们不会被删除。
例如,我需要在一个文件中存储一个日期(我不想为此使用数据库),我只需要它在那里 2 或 3 天。
我能做些什么?
让 Web 服务器在包中编写并不是一个好习惯。你可以这样做,但你必须处理权限,它会带来安全风险......
为什么不使用定期清理的 /tmp(在 UNIX 服务器上)或您自己的 tmp 目录,如 /home/ChocoDeveloper/tmp 和 cron 任务来清理它?
抱歉,这不是对所提出的确切问题的答案,但我建议有更好的方法来实现这一点,而无需将日期存储在临时文件中,即使您不想使用数据库。
您是否考虑过使用 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;
}