Το OpenCart στην έκδοση 3.0.0 και μετά πρόσθεσε ή μάλλον άλλαξε έναν παλιότερο πίνακα και πλέον έχει τον oc_session. Σε αυτόν τον πίνακα αποθηκεύονται όλα τα sessions που γίνονται στην σελίδα με κάθε επίσκεψη. Είτε κανονικός χρήστης, είτε bot, είτε επισκέπτης, δημιουργεί ένα νέο session και μια νέα εγγραφή σε αυτόν τον πίνακα.
Υπο κανονικές συνθήκες αυτός ο πίνακας θα έπρεπε να αδειάζει αυτόματα όταν ένα session έχει λήξει. Δυστυχώς όμως αυτό δεν είναι η πραγματικότητα στην έκδοση 3 και μέχρι αυτό να φτιαχτεί σε επόμενες εκδόσεις, οι λύσεις που μπορείτε να κάνετε είναι όλες χειροκίνητες.
Ποιο είναι το πρόβλημα;
Γιατί είναι πρόβλημα το να μην διαγράφονται οι παλιές εγγραφές, θα αναρωτιέστε. Πολύ απλή η απάντηση. Εάν έχετε ένα μικρό κατάστημα με 400-500 επισκέψεις την ημέρα, δεν θα δείτε διαφορά. Ένα μέτριο ή μεγάλο κατάστημα με 3000+ επισκέψεις την ημέρα, δημιουργεί τουλάχιστον 3000 εγγραφές στον πίνακα αυτό ανά ημέρα, συν τις εγγραφές από το Google Search Bot, Google Image Bot, Bing και όσα άλλα bots επισκέπτονται την σελίδα σας ανά κάποιες ώρες την ημέρα.
Αυτό σημαίνει ότι με τον καιρό ο πίνακας αυτός θα έχει κάποια εκατομμύρια εγγραφές οι οποίες κυριολεκτικά σας είναι άχρηστες. Έχουμε δει ηλ. καταστήματα με τον συγκεκριμένο πίνακα να καταναλώνει πάνω από 300mbyte και όλη η υπόλοιπη βάση να είναι κάτι λίγες δεκάδες megabyte.
Εάν αυτό στην περίπτωση σας δεν σας ενοχλεί και δεν έχετε θέματα με την ταχύτητα της σελίδας σας, αγνοήστε αυτό το άρθρο και προχωρήστε σε ό,τι κάνατε σήμερα. Αλλιώς, παρακάτω έχουμε μια λύση που μπορεί να σας βοηθήσει.
Εάν λοιπόν θέλετε να αδειάσετε τα “σκουπίδια” από αυτόν τον πίνακα, μπείτε στο phpMyAdmin που έχετε στο hosting σας και μπορείτε να δείτε την βάση του καταστήματος σας και τρέξτε την παρακάτω εντολή:
DELETE FROM `oc_session` WHERE expire < NOW() Προσοχή:
- Εάν το DB_PREFIX σας είναι άλλο από το oc_ παρακαλούμε αλλάξτε το με το δικό σας DB_PREFIX που έχετε ορίσει μέσα στο config.php, αλλιώς η παραπάνω εντολή δεν θα δουλέψει για εσάς.
Τι κάνει το παραπάνω;
Με την παραπάνω SQL εντολή, διαγράφονται όσες εγγραφές session έχουν ημερομηνία λήξης μικρότερη του τώρα. Το τώρα ορίζεται από το πότε θα τρέξετε την εντολή.
Σίγουρα υπάρχουν και άλλοι τρόποι να το κάνετε αυτό, φτιάχνοντας για παράδειγμα κάποιο PHP script το οποίο το τρέχετε με cron κάθε 1 φορά την εβδομάδα ή όποτε θεωρείτε ότι είναι σωστό να αδειάζει αυτός ο πίνακας. Στο συγκεκριμένο άρθρο, προτείνουμε την πιο γρήγορη λύση.
Εάν δεν γνωρίζετε τι κάνετε παρακαλούμε αγνοήστε τον συγκεκριμένο οδηγό και επικοινωνήστε με τον πάροχο φιλοξενίας σας ή τον τεχνικό σας.
