CSCart: Πρόβλημα στη διαχείριση των cache αρχείων που δημιουργεί

Σίγουρα όσοι διαχειρίζεστε καταστήματα βασισμένα στη πλατφόρμα ηλεκτρονικού εμπορίου cscart θα έχετε παρατηρήσει ότι από την έκδοση 4 έως και την έκδοση 4.3.1 το cscart δεν διαχειρίζεται σωστά τα αρχεία που δημιουργεί ως cache.

Αυτό που συμβαίνει είναι ότι δεν διαγράφει τα παλιά cache αρχεία με αποτέλεσμα να αυξάνεται ο συνολικός χώρος που καταναλώνει στο δίσκο ο φάκελος cache του cscart.

Ο συγκεκριμένος φάκελος βρίσκεται μέσα στο φάκελο "var" που βρίσκεται στο root φάκελο του cscart. Εκεί δηλαδή που είναι εγκατεστημένο το cscart.

Έχοντας επικοινωνήσει με την CSCart μας είπαν ότι γνωρίζουν το πρόβλημα αλλά δεν ξέρουν σε πια επομένη έκδοση θα μελετήσουν για κάποια λύση.

Κατανοώντας ότι πολλοί από εσάς ίσως να τρέχετε το cscart από κάποιο shared hosting λογαριασμό και ίσως να έχετε περιορισμό στoσυνολικό αποθηκευτικό χώρο, σας λέμε τον τρόπο πως μπορείτε να ξεπεράσετε αυτό το πρόβλημα.

Γενικά, η ιδέα είναι να να διαγραφούμε το φάκελο /var/cache μια φόρα την εβδομάδα, προτιμότερο μεταμεσονύκτια.

Επιλέγουμε αυτή τη μέθοδο καθαρισμού της cache και όχι μέσα από την διαχείριση του cscart γιατί αν φιλοξενούμε το ηλεκτρονικό κατάστημα σε έναν hosting λογαριασμό που έχει περιορισμούς στους πόρους τότε μπορεί να μας μπλοκάρει προσωρινά την σελίδα (μερικά λεπτά).

Επίσης, αν κάνετε καθαρισμό μέσω της διαχείρισης και έχει γίνει πολλά gigabyte ο φάκελος cache ίσως πάρει αρκετά λεπτά για να γίνει καθαρισμός και φυσικά ίσως κολλήσει.

Παρακάτω παρουσιάζουμε δυο παραδείγματα τα οποία αφορούν hosting λογαριασμό που είναι σε περιβάλλον Linux και τρέχει σε cPanel. Για το πρώτο παράδειγμα, θα πρέπει να έχουμε δικαίωμα σύνδεσης μέσω ssh. Ενώ για το δεύτερο απλά πρόσβαση στον πινάκα έλεγχου του πακέτου hosting που έχουμε.

Πρώτο παράδειγμα.
Αν και λίγο πιο πολύπλοκο, μας δίνει το πλεονέκτημα να τρέξουμε περισσότερες εντολές μέσα από ένα μόνο αρχείο χωρίς να έχουμε πολλά cron jobs.

  1. Συνδεόμαστε μέσω ssh στον λογαριασμό μας.
  2. Δημιουργούμε ένα αρχείο π.χ. delete_cache.sh ένα level πάνω από το φάκελο public_html ή το httpdocs.
  3. Γραφούμε μέσα στο αρχείο (για cPanel): rm-rf public_html/var/cache
    Για Plesk: rm -rf  httpdocs/var/cache
  4. Και σε δεύτερη γραμμή: lynx -source "http://www.mysite.gr " > /dev/null
    (Αυτή η εντολή φορτώνει τη σελίδα εκ νέου. Αυτό το κάνουμε γιατί μετά τον καθαρισμό της cache παίρνει λίγο χρόνο μέχρι να την δημιουργήσει πάλι το cscart, π.χ. γιατί το ηλεκτρονικό κατάστημα έχει πολλά addons, και έτσι στο πρώτο επισκέπτη μετά την διαγραφή της cache η ιστοσελίδα θα αργήσει να φορτώσει. Με αυτό το τρόπο θα το αποφύγουμε.)
  5. Αποθηκεύουμε και κλείνουμε το αρχείο
    (αν δεν ξέρετε να το δημιουργήσετε μέσω ssh τότε κάντε το upload μέσω FTP)
  6. Μετά αλλάζουμε τα δικαιώματα στο αρχείο: chmod 755 delete_cache.sh
  7. Και κάνουμε το αρχείο εκτελέσιμο: chmod -x delete_cache.sh
  8. Το αρχείο μας είναι πλέον έτοιμο, συνδεόμαστε στο cPanel για να φτιαξουμε ένα cron task ώστε να τρέχει μια φορά την εβδομάδα.
  9. Αφού συνδεθείτε στο cPanel, θα πρέπει να βρείτε ένα εικονίδιο “Cron Jobs”
  10. Επιλέγετε από το "Common Settings" το "Once Per Week"
  11. Και στην εντολή cron βάζουμε: /bin/sh /home/xxxxxx/delete_cache.sh
    (όπου xxxxxx είναι το όνομα σύνδεσης στο cPanel)
  12. Πατάμε το "Add New Cron Job" και έχουμε ολοκληρώσει την όλη διαδικασία.

 

Δεύτερο παράδειγμα
Πιο απλό και εύκολο.

  1. Αφού συνδεθείτε στο cPanel, θα πρέπει να βρείτε ένα εικονίδιο “Cron Jobs”
  2. Επιλέγετε από το “Common Settings” το “Once Per Week”
  3. Και στην εντολή cron βάζουμε: rm -rf /home/xxxxxx/public_html/var/cache/*
    (όπου xxxxxx είναι το όνομα σύνδεσης στο cPanel)
    Για Plesk: rm -rf /var/www/vhosts/mysite.gr/httpdocs/var/cache/*
  4. Πατάμε το "Add New Cron Job" και έχουμε ολοκληρώσει την όλη διαδικασία.

 

Η παραπάνω διαδικασίες μπορούν να εφαρμοστούν και σε άλλα συστήματα, κάθε σύστημα ίσως έχει κάποιες αλλαγές, όπως πχ ο φάκελος public_html ή ίσως η εντολή "sh" να είναι σε άλλο φάκελο. Για να βρούμε σε ποιο φάκελο είναι τρέχουμε "which sh" και τον εντοπίζουμε.