fix(slowness): refs #8886 reduce session table updates

This commit is contained in:
Juan Ferrer 2025-04-08 13:23:30 +02:00
parent 5b968b6e46
commit 3c552c86c7
3 changed files with 22 additions and 10 deletions

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
hedera-web (25.4.4) stable; urgency=low
hedera-web (25.4.5) stable; urgency=low
* Initial Release.

View File

@ -1,6 +1,6 @@
{
"name": "hedera-web",
"version": "25.4.4",
"version": "25.4.5",
"description": "Verdnatura web page",
"license": "GPL-3.0",
"repository": {

View File

@ -3,6 +3,7 @@
namespace Vn\Web;
class DbSessionHandler implements \SessionHandlerInterface {
const UPDATE_INTERVAL = 30;
private $db;
function __construct($db) {
@ -24,12 +25,23 @@ class DbSessionHandler implements \SessionHandlerInterface {
}
function write($sessionId, $sessionData) {
$this->db->query(
'INSERT INTO userSession SET
ssid = #, data = #, lastUpdate = NOW()
ON DUPLICATE KEY UPDATE
data = VALUES(data), lastUpdate = VALUES(lastUpdate)',
[$sessionId, $sessionData]);
$session = $this->db->getObject(
'SELECT data, lastUpdate < (NOW() - INTERVAL # SECOND) hasToRefresh
FROM userSession WHERE ssid = #',
[self::UPDATE_INTERVAL, $sessionId]
);
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;
}
@ -40,8 +52,8 @@ class DbSessionHandler implements \SessionHandlerInterface {
function gc($maxLifeTime) {
$this->db->query('DELETE FROM userSession
WHERE lastUpdate < TIMESTAMPADD(SECOND, -#, NOW())',
[$maxLifeTime]
WHERE lastUpdate < (NOW() - INTERVAL # SECOND)',
[$maxLifeTime + self::UPDATE_INTERVAL + 1]
);
return TRUE;
}