簡體   English   中英

Codeigniter數據庫會話GET LOCK

[英]Codeigniter database session GET LOCK

我有兩個運行Codeigniter框架並使用負載均衡器的Web服務器,我想存儲兩個Web服務器的共享會話,而不是使用負載均衡器中的粘性會話。

我試圖使用ci數據庫會話。 幾天來,連接非常好,直到突然開始顯示緩慢的查詢,如下所示:

SELECT GET_LOCK('59e30181bfafeae2d31394d621bab3cc4c401956', 300) AS ci_session_lock;

查詢可能需要5到15秒,這會降低服務器的速度。

這是config.php中的會話配置

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0; //expire when the browser is closed 
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

有沒有人遇到過這樣的經歷? 之前謝謝。

如果遇到慢查詢問題,則需要將會話保存到文件而不是數據庫中,這將保存慢查詢和多次查詢請求。

例:

$config['sess_driver'] = 'files'; // need to use files

在CI中使用的存儲驅動程序:文件,數據庫,redis,memcached

然后定義tmp路徑:

$config['sess_save_path'] = sys_get_temp_dir();

根據PHP手冊, sys_get_temp_dir()返回用於臨時文件的目錄路徑

您還可以設置特定的文件夾以將會話保存在$config['sess_save_path']如下所示:

$config['sess_save_path'] = 'session_folder'; // this will save session on root inside **session_folder** folder.

暫無
暫無

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

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