![](/img/trans.png)
[英]Every refresh Multiple sessions file created in session folder : Laravel
[英]Laravel Session files not cleaning from the framework/sessions folder
我在共享主机(OVH pro)上使用 Laravel 5.2 生产(PHP 7.0.5)。
我正在使用文件会话驱动程序,并且在我以前的主机上一切正常(使用相同的应用程序),但是自从我移到 OVH 后,会话文件不断被创建并且永远不会被 PHP 垃圾收集删除。 我必须手动擦除文件(每天创建 5000 多个文件)。
我的config/session.php
文件设置正确:
'driver' => 'file',
'lifetime' => 120,
'lottery' => [2, 100],
我的文件夹storage
、 storage/framework
、 storage/framework/sessions
都设置了 0755 权限。
我还通过将这两行放在config/session.php
的顶部来覆盖php.ini
ini_set('session.gc_probability', '5');
ini_set('session.gc_divisor', '100');
我联系了我的主人,但他们告诉我这一定与我的 Laravel 应用程序有关,他们无能为力。
编辑:我的会话工作正常,我的意思是每个访问者只创建一个文件。 问题只是会话文件没有得到清理,即使有 777 权限。
即使我将 Laravel 会话抽签设置为 100/100,文件仍然没有被删除:
/*
|--------------------------------------------------------------------------
| Session Sweeping Lottery
|--------------------------------------------------------------------------
|
| Some session drivers must manually sweep their storage location to get
| rid of old sessions from storage. Here are the chances that it will
| happen on a given request. By default, the odds are 2 out of 100.
|
*/
'lottery' => [100, 100],
编辑: OVH 托管细节:我在 OVH 上使用多站点,并且包含每个站点的文件夹放置在我的 OVH 主机的路径上,而不是在默认的www
文件夹中。
出于安全原因,我这样做了,因为www
文件夹可通过mynickname.cluster005.ovh.net
公开访问,我不希望我的任何站点从
mynickname.cluster005.ovh.net/site1
mynickname.cluster005.ovh.net/site2
...
( www\\site1
, www\\site2
...)。
所以我在想,也许只有位于www
文件夹内的文件是可写的,而可能不是外面的(在根目录下)? 这将解释我的文件没有被删除。 我今晚会做一个测试,看看文件放在www\\site1\\storage\\sessions
时是否被删除。
有一些步骤可以让您首先找到问题所在
如果每个页面都更改了会话 ID,则需要检查会话配置域设置是否正确。
如果会话 id 没有改变,也许你需要将存储文件夹前提更改为 777。
我希望这可以帮助你。
如果您使用haproxy
,请考虑以下答案:
会话文件可能由haproxy's http health checks
。
111.11.111.1 - - [28/Jul/2016:10:40:30 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"
111.11.111.1 - - [28/Jul/2016:10:40:32 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"
111.11.111.1 - - [28/Jul/2016:10:40:34 -0400] 200 "GET / HTTP/1.0" 4 "-" "-" "-"
更新option httpchk GET /
指向一些routes
,你可以设置会话司机是array
上的haproxy.cfg
。
添加Config::set('session.driver', 'array');
行以禁用会话文件的创建。
参考:
转到config/session
并设置'lifetime' => 120
,或者一个不要太大的数字,这是会话持续的时间(以分钟为单位)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.