我让系统(CakePHP 2.1)运行了大约两周,并且不得不删除成千上万的会话文件。删除它们后,它们又开始滚动。我让它运行了几个小时,我达到了426个文件。这对系统中的10个用户来说是正常的吗?我有一个robot.txt
文件告诉引擎惹恼,我在所有页面上都有htth和https。有人可以为我解释一下吗?
Configure::write('Session', array(
'defaults' => 'cake',
'cookie' => 'scsys',
'timeout' => 600
));
答案 0 :(得分:1)
这对我来说也是一个问题。我们每秒获得1000个会话文件。
这样做的原因是我们将Session组件加载到AppCOntroller中,并且每隔几秒就会有一些cron作业从远程服务器上访问我们站点上的URL。由于在服务器userAgent上禁用了Cookie,因此每次运行cron时都必须创建一个新会话(启用了cookie的普通userAgent将使用相同的会话文件)。
这有两种解决方法。一种是将Session组件移出AppController并移动到您需要的特定控制器中。另一个,我选择的解决方案是在运行的每个cron之后使用php命令session_destroy()。为了更进一步,我已经制作了一个插件Cron,其中包含Cotroller / CronAppController.php:
/**
* class to extend if you want the session destroyed after an action has completed.
* Useful for limiting cake session file storage overload
*
*/
class CronAppController extends AppController {
/**
* set this to true in a controller action if you want the session destroyed
*/
public $cronAction = false;
function afterFilter(){
parent::afterFilter();
if($this->cronAction){
session_destroy();
}
}
}
然后使用Cron.CronAppController扩展具有cron操作的控制器,然后在您的操作集$ this-> cronAction = true;你很高兴去!