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;
	}

@Alexandra. Αυτό που κατάλαβα είναι ότι πρέπει να […]

Σε παλαιότερες συνεργασίες και συζητήσεις που είχα[…]

Το θέμα λύθηκε !! Κυνηγούσα κουνούπι και πήρα όπλο[…]

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