Laravel会话文件未从framework / sessions文件夹中清除

时间:2016-05-05 23:58:54

标签: php laravel session ovh

我正在使用Laravel 5.2进行生产(PHP 7.0.5)的共享主机(OVH pro)。

我正在使用文件会话驱动程序,一切都在我以前的主机上运行正常(使用相同的应用程序),但由于我转移到OVH,会话文件一直在创建,永远不会被PHP垃圾收集删除。 我必须手动擦除文件(每天创建超过5000个文件)。

我的config/session.php文件设置正确:

'driver' => 'file',
'lifetime' => 120,
'lottery' => [2, 100],

我的文件夹storagestorage/frameworkstorage/framework/sessions都设置了0755权限。

我还通过将这两行放在config/session.php

的顶部来覆盖 php.ini
ini_set('session.gc_probability', '5');
ini_set('session.gc_divisor', '100');

似乎从phpinfo()返回的内容正常工作: PHP sessions info

我联系了我的主持人,但他们告诉我必须与我的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\site1www\site2 ...)。

所以我在想,也许只有位于www文件夹内的文件是可写的,而且可能不在外面(在根目录下)?这可以解释我的文件没有被删除。今晚我将进行测试,看看文件是否在www\site1\storage\sessions放置时被删除。

3 个答案:

答案 0 :(得分:0)

有一些步骤,你可以找到第一个问题

  1. 确保会话ID在每个页面中都已修复(回显会话ID)
  2. 如果每个页面都更改了会话ID,则需要检查会话配置 域名设置是正确的。

    如果会话ID未更改,则可能需要将存储文件夹更改为777。

    我希望能帮助你。

答案 1 :(得分:0)

如果您使用haproxy,请考虑以下答案:

会话文件可以由haproxy's http health checks创建。

  1. 检查您的网络访问日志是否为固定间隔访问。
  2.   

    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“ - ”“ - ”“ - ”

    1. 更新option httpchk GET /以指向某些routes您可以在array上将会话驱动设置为haproxy.cfg

    2. 添加Config::set('session.driver', 'array');行以禁用会话文件的创建。

    3. 参考:

答案 2 :(得分:0)

转到config/session并设置'lifetime' => 120或一个不太大的数字,这是会话持续几分钟的时间