OpenCart-Hellas 

Η Ελληνική κοινότητα υποστήριξης του Opencart

Αναφορές νέων & επίλυση γνωστών bugs.
#6939
Σε εκδόσεις OpenCart 3.0.x έως και την 3.0.3.6 υπάρχει bug στο garbage collection των sessions που καταχωρούνται στη βάση και δεν διαγράφονται.

Για την ενεργοποίηση του garbage collection ακολουθήστε τις οδηγίες:

(Οι οδηγίες βασίστηκαν σε κώδικα της v3.0.3.6, αν υπάρχει κάποια διαφορά σε παλαιότερες εκδόσεις στείλτε μηνυμα να το δω)

Στο system/library/session.php
κάτω από το:
Κώδικας: Επιλογή όλων
register_shutdown_function(array($this, 'close'));
προσθέτουμε:
Κώδικας: Επιλογή όλων
register_shutdown_function(array($this, 'gc'));
Πριν το κλείσιμο της class, πριν το τελευταίο } προσθέτουμε:
Κώδικας: Επιλογή όλων
	
public function gc() {
  $this->adaptor->gc();
}
Στο system/library/session/db.php
το:
Κώδικας: Επιλογή όλων
	public function gc($expire) {
		$this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE expire < " . ((int)time() + $expire));
		
		return true;
	}
Το κάνουμε έτσι (θα τρέχει μόνο κάποιες φορές που θα προκύπτει βάσει τυχαιότητας ο αριθμός 1 για να μην επιβαρύνεται ο sql server με συνεχή queries σε καταστήματα που έχουν πολλές επισκέψεις):
Κώδικας: Επιλογή όλων
	public function gc() {
		if (round(rand(1, 5)) == 1) {
			$this->db->query("DELETE FROM `" . DB_PREFIX . "session` WHERE `expire` < '" . $this->db->escape(date('Y-m-d H:i:s', time()-$this->expire)) . "'");
		}

		return true;
	}

Στα συμβάντα βρήκα κάτι, αλλά δεν ξέρω αν σχετίζε[…]

Νέο Facebook Group OpenCart Hellas

Αγαπητοί φίλοι και συνεργάτες, θα θέλαμε να σας εν[…]

Ναι , τώρα την εμφανίζει σωστά. Ναι, διέγραψε τις […]

Μακάρι να λύθηκε γιατί είναι όντως θέμα τα email κ[…]

Πριν ζητήσετε βοήθεια στο φόρουμ, παρακαλούμε ελέγξτε αν υπάρχει έτοιμη λύση στο OpenCart Extension Marketplace!