Eliminazione dei file di sessione di Magento


8

La cartella var / session mantiene costantemente una quantità molto grande di dati che causano un grande utilizzo dell'innodo sul server,

ogni volta che elimino i file dalla cartella della sessione, l'utilizzo dell'innodo scende al minimo.

quindi voglio chiedere come posso eliminare automaticamente quei file di sessione ogni 24 ore, ad esempio.

ho appena iniziato a lavorare con MAgento, quindi sono un po 'alle prime armi, quindi una spiegazione così ampia sarebbe apprezzata.

so che dovrei creare un lavoro cron in qualche modo tramite cpanel o smt in quel modo.

Risposte:


2

Se utilizzi un processo cron per eliminare tutte le sessioni, eliminerai tutti i carrelli dei clienti e le persone lasceranno il tuo sito arrabbiato.

Ti suggerisco di guardare i tuoi file di sessione e vedere se sembrano sospetti.

Prova a controllare da dove provengono gli indirizzi IP dei tuoi visitatori: https://www.iplocation.net/

Se, ad esempio, trovi un sacco di IP cinesi e il tuo sito web non è cinese, questi sono probabilmente robot che stanno sprecando la tua larghezza di banda. Dovresti bloccare i loro intervalli IP nelle impostazioni di Apache o in .htaccess.

(Credo che tu possa anche fare il filtraggio basato sul paese in Apache ma penso che rallenta i tempi di risposta. Non l'ho provato.)

Magento 1.x (non sono sicuro di 2.x) sembra anche avere un bug in cui crea una nuova sessione per ogni richiesta quando il client non accetta i cookie. Quindi robot come Googlebot, Bingbot, SemrushBot e altri, generano tutti un numero enorme di file di sessione.

Per il mio server, l'unica cosa che dovevo fare era sbarazzarmi di quei file di sessione bot. Fino a quando non ho il tempo di trovare e correggere il bug di Magento, ho uno script di shell eseguito da cron per rimuovere tutti i file di sessione contenenti queste stringhe:

  • Googlebot
  • bingbot
  • ragno
  • SEMRush
  • AhrefsBot
  • UptimeRobot
  • spbot

Hai trovato una soluzione per correggere il bug? Ho appena eliminato oltre 1,2 milioni di file, il che è semplicemente ridicolo.
Marco,

Lo script bash che ho scritto per ripulire i file ha funzionato benissimo all'inizio, ma i modelli continuano a cambiare, quindi è un sacco di lavoro di manutenzione. Quindi ho intenzione di scavare nel codice e trovare la vera soluzione. Il codice dovrebbe verificare se il client accetta i cookie (perché i bot non li accettano) e NON creare una sessione per tali client.
Buttle Butkus,

Ti dispiacerebbe condividere il codice, se hai finito? Al momento abbiamo un problema solo con M2E Pro, Google e Bing. Queste 3 cose che creano un sacco di file di sessione.
Marco,

1

Piuttosto che usare script personalizzati, sarebbe più sensato semplicemente chiarirli con PHP specificando i giusti valori nel tuo php.inifile. Se ti assicuri che session.gc_maxlifetimeha un valore relativamente piccolo (ma> = timeout del cookie della sessione), ad esempio 1414 ed session.gc_probabilityè impostato su 1, il garbage collector della sessione PHP integrato dovrebbe rimuovere i file per te.


come posso cambiarli se non trovo il file php.ini nella directory ftp di Magento. ho provato a creare il file test.php e ho impostato questi valori con ini_set, ma le stringhe cambiano i loro valori. per favore
aiutatemi

Non funziona, hai avuto altre soluzioni? Per favore
aiutatemi

Basta creare un file che denomina phpinfo.php nella directory ftp di Magento e inserire "phpinfo ();". Quindi prova a caricare quello sul browser, scoprirai dove si trova esattamente php.ini sul tuo server. Quindi probabilmente puoi apportare facilmente queste modifiche.
Asheem Patro,

Nel mio caso, i robot possono creare migliaia di nuove sessioni all'ora. Vogliamo che le sessioni dei clienti reali durino almeno una settimana. Quindi, la pulizia della sessione tramite PHP non è la risposta. Magento deve verificare che il client accetti i cookie (e / o verificare se il client è un bot) prima di creare una sessione, invece di creare una nuova sessione per ogni caricamento della pagina che non ha inviato un cookie.
Buttle Butkus,

1

Magento salva i dati della sessione del cliente nella cartella var / session se elimini questa cartella, eliminerà tutti i dati della sessione del cliente

Supponiamo che uno dei tuoi clienti ospiti aggiunga 3 prodotti al carrello se elimini i dati della sessione rimuoverà tutti e 3 i prodotti dal carrello ed è una brutta esperienza per il cliente piuttosto che eliminare i dati della sessione che puoi salvare nel database

Per utilizzare il database per l'archiviazione della sessione, è sufficiente inserirlo nell'app / etc / local.xml :

<session_save><![CDATA[db]]></session_save>

oppure è possibile utilizzare la sessione redis / Memcached Session cache per salvare i dati nella cache redis / Memcached Session

Per usare un archivio di sessioni memcached in Magento dovrai averlo nella tua app / etc / local.xml :

<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://localhost:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path>

Per ulteriori informazioni sulla memorizzazione delle sessioni, visitare questo link


0

Una soluzione è che puoi creare cron job in esecuzione una volta al giorno per eliminare i file desiderati.

Qui puoi vedere come impostare cron job: /ubuntu/2368/how-do-i-set-up-a-cron-job

un tutorial cpanel per cronjob: http://support.hostgator.com/articles/cpanel/how-do-i-create-and-delete-a-cron-job

È possibile creare script bash o php che eseguirà l'operazione di eliminazione dei file. E metti questo script nel cron, da eseguire alle 3 o alle 4 del mattino, quando il server è meno usato. Per testare lo script funziona, è possibile eseguirlo manualmente.


0

Crea un file sh nella radice del documento. Inserisci sotto il codice al suo interno.

 #!/bin/bash
 # Shell script for cleaning session
 path=your document_root path goes here
 cd $path
 rm -rf var/session/*

cambia percorso con il percorso root_documento senza virgolette. Esegui questo codice quando ci sono meno accessi al sito.

FATTO!!


questo funziona per me rm -rf var / session / *
Alam Zaib,

Questo uccide anche tutte le sessioni attive
Kevin Krieger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.