簡體   English   中英

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],

我的文件夾storagestorage/frameworkstorage/framework/sessions都設置了 0755 權限。

我還通過將這兩行放在config/session.php的頂部來覆蓋php.ini

ini_set('session.gc_probability', '5');
ini_set('session.gc_divisor', '100');

phpinfo()返回的內容來看,它似乎工作正常: PHP 會話信息

我聯系了我的主人,但他們告訴我這一定與我的 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時是否被刪除。

有一些步驟可以讓您首先找到問題所在

  1. 確保每個頁面中的會話 ID 都是固定的(回顯會話 ID)

如果每個頁面都更改了會話 ID,則需要檢查會話配置域設置是否正確。

如果會話 id 沒有改變,也許你需要將存儲文件夾前提更改為 777。

我希望這可以幫助你。

如果您使用haproxy ,請考慮以下答案:

會話文件可能由haproxy's http health checks

  1. 檢查您的網絡訪問日志以固定時間間隔訪問。

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'); 行以禁用會話文件的創建。


參考:

轉到config/session並設置'lifetime' => 120 ,或者一個不要太大的數字,這是會話持續的時間(以分鍾為單位)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM