fix(slowness): refs #8886 reduce session table updates
This commit is contained in:
parent
5b968b6e46
commit
3c552c86c7
|
@ -1,4 +1,4 @@
|
||||||
hedera-web (25.4.4) stable; urgency=low
|
hedera-web (25.4.5) stable; urgency=low
|
||||||
|
|
||||||
* Initial Release.
|
* Initial Release.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "hedera-web",
|
"name": "hedera-web",
|
||||||
"version": "25.4.4",
|
"version": "25.4.5",
|
||||||
"description": "Verdnatura web page",
|
"description": "Verdnatura web page",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Vn\Web;
|
namespace Vn\Web;
|
||||||
|
|
||||||
class DbSessionHandler implements \SessionHandlerInterface {
|
class DbSessionHandler implements \SessionHandlerInterface {
|
||||||
|
const UPDATE_INTERVAL = 30;
|
||||||
private $db;
|
private $db;
|
||||||
|
|
||||||
function __construct($db) {
|
function __construct($db) {
|
||||||
|
@ -24,12 +25,23 @@ class DbSessionHandler implements \SessionHandlerInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
function write($sessionId, $sessionData) {
|
function write($sessionId, $sessionData) {
|
||||||
$this->db->query(
|
$session = $this->db->getObject(
|
||||||
'INSERT INTO userSession SET
|
'SELECT data, lastUpdate < (NOW() - INTERVAL # SECOND) hasToRefresh
|
||||||
ssid = #, data = #, lastUpdate = NOW()
|
FROM userSession WHERE ssid = #',
|
||||||
ON DUPLICATE KEY UPDATE
|
[self::UPDATE_INTERVAL, $sessionId]
|
||||||
data = VALUES(data), lastUpdate = VALUES(lastUpdate)',
|
);
|
||||||
[$sessionId, $sessionData]);
|
|
||||||
|
if (!isset($session)
|
||||||
|
|| $sessionData !== $session->data
|
||||||
|
|| $session->hasToRefresh) {
|
||||||
|
$this->db->query(
|
||||||
|
'INSERT INTO userSession SET
|
||||||
|
ssid = #, data = #, lastUpdate = NOW()
|
||||||
|
ON DUPLICATE KEY UPDATE
|
||||||
|
data = VALUES(data), lastUpdate = VALUES(lastUpdate)',
|
||||||
|
[$sessionId, $sessionData]);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,8 +52,8 @@ class DbSessionHandler implements \SessionHandlerInterface {
|
||||||
|
|
||||||
function gc($maxLifeTime) {
|
function gc($maxLifeTime) {
|
||||||
$this->db->query('DELETE FROM userSession
|
$this->db->query('DELETE FROM userSession
|
||||||
WHERE lastUpdate < TIMESTAMPADD(SECOND, -#, NOW())',
|
WHERE lastUpdate < (NOW() - INTERVAL # SECOND)',
|
||||||
[$maxLifeTime]
|
[$maxLifeTime + self::UPDATE_INTERVAL + 1]
|
||||||
);
|
);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue