![](/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.