我正在使用Laravel 5.2进行生产(PHP 7.0.5)的共享主机(OVH pro)。
我正在使用文件会话驱动程序,一切都在我以前的主机上运行正常(使用相同的应用程序),但由于我转移到OVH,会话文件一直在创建,永远不会被PHP垃圾收集删除。 我必须手动擦除文件(每天创建超过5000个文件)。
我的config/session.php
文件设置正确:
'driver' => 'file',
'lifetime' => 120,
'lottery' => [2, 100],
我的文件夹storage
,storage/framework
,storage/framework/sessions
都设置了0755权限。
我还通过将这两行放在config/session.php
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
放置时被删除。
答案 0 :(得分:0)
有一些步骤,你可以找到第一个问题
如果每个页面都更改了会话ID,则需要检查会话配置 域名设置是正确的。
如果会话ID未更改,则可能需要将存储文件夹更改为777。
我希望能帮助你。
答案 1 :(得分:0)
如果您使用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');
行以禁用会话文件的创建。
参考:
答案 2 :(得分:0)
转到config/session
并设置'lifetime' => 120
或一个不太大的数字,这是会话持续几分钟的时间