我读到我可以使用app / cache或app / logs来获取tmp文件,但它感觉不对,因为除非我自己这样做,否则它们不会被删除。
例如,我需要在文件中存储日期(我不想为此使用数据库),我只需要在那里工作2到3天。
我该怎么办?
答案 0 :(得分:2)
让Web服务器在bundle中写入不是一个好习惯。你可以这样做,但你必须处理权限,它会带来安全风险......
为什么不使用经常清理的/ tmp(在UNIX服务器上)或者你自己的tmp目录如/ home / ChocoDeveloper / tmp和cron任务来清理它?
答案 1 :(得分: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;
}