Suppression de fichiers de session Magento

8

Le dossier var / session conserve constamment une très grande quantité de données qui provoque une grande utilisation d'innode sur le serveur,

chaque fois que je supprime des fichiers du dossier de session, l'utilisation d'innode chute au minimum.

donc je veux demander comment puis-je supprimer automatiquement ces fichiers de session toutes les 24h par exemple.

Je viens de commencer à travailler avec MAgento, donc je suis un peu novice jusqu'à présent, donc des explications importantes seraient appréciées.

je sais que je devrais créer un travail cron en quelque sorte via cpanel ou smt comme ça.

Andrius
la source

Réponses:

2

Si vous utilisez un travail cron pour supprimer toutes les sessions, vous supprimerez tous les paniers d'achat des clients et les gens quitteront votre site en colère.

Je vous suggère de regarder vos fichiers de session et de voir s'ils semblent suspects.

Essayez de vérifier d'où proviennent les adresses IP de vos visiteurs: https://www.iplocation.net/

Si, par exemple, vous trouvez un tas d'adresses IP chinoises et que votre site Web n'est pas chinois, ce sont probablement des bots qui gaspillent votre bande passante. Vous devez bloquer leurs plages IP dans vos paramètres Apache ou dans .htaccess.

(Je pense que vous pouvez même effectuer un filtrage par pays dans Apache, mais je pense que cela ralentit les temps de réponse. Je n'ai pas essayé cela.)

Magento 1.x (pas sûr de 2.x) semble également avoir un bug où il crée une nouvelle session pour chaque demande lorsque le client n'accepte pas les cookies. Ainsi, les robots comme Googlebot, Bingbot, SemrushBot et autres, génèrent tous un grand nombre de fichiers de session.

Pour mon serveur, la seule chose que je devais faire était de me débarrasser de ces fichiers de session de bot. Jusqu'à ce que j'aie le temps de trouver et de corriger le bogue de Magento, j'ai un script shell exécuté par cron pour supprimer tous les fichiers de session contenant ces chaînes:

  • Googlebot
  • bingbot
  • araignée
  • semrush
  • AhrefsBot
  • UptimeRobot
  • spbot
Buttle Butkus
la source
Avez-vous trouvé une solution pour corriger le bogue? Je viens de supprimer plus de 1,2 Mio de fichiers, ce qui est tout simplement ridicule.
Marco
Le script bash que j'ai écrit pour nettoyer les fichiers a très bien fonctionné au début, mais les modèles continuent de changer, donc c'est beaucoup de travail de maintenance. Je prévois donc de fouiller dans le code et de trouver la vraie solution. Le code doit vérifier si le client accepte les cookies (car les robots ne les acceptent pas) et NE PAS créer de session pour ces clients.
Buttle Butkus
Pourriez-vous partager le code, si vous avez terminé? Pour le moment, nous n'avons qu'un problème avec M2E Pro, Google et Bing. Ces 3 choses créent des tas de fichiers de session.
Marco
1

Plutôt que d'utiliser des scripts personnalisés, il serait plus logique de simplement faire en sorte que PHP les clarifie pour vous en spécifiant les bonnes valeurs dans votre php.inifichier. Si vous vous assurez que la valeur session.gc_maxlifetimeest relativement petite (mais> = le délai d'expiration de votre cookie de session), par exemple 1440, et qu'il session.gc_probabilityest défini sur 1, le récupérateur de place de session PHP intégré doit supprimer les fichiers pour vous.

Peter O'Callaghan
la source
comment les changer si je ne trouve pas le fichier php.ini dans le répertoire ftp de Magento. J'ai essayé de créer le fichier test.php et de définir ces valeurs avec ini_set, mais les chaînes changent leurs valeurs. s'il vous plaît aider
Andrius
Cela
Créez simplement un fichier nommant phpinfo.php dans le répertoire ftp de Magento et mettez "phpinfo ();". Ensuite, essayez de charger celui-ci sur le navigateur, vous apprendrez où se trouve exactement le php.ini sur votre serveur. Vous pourrez alors probablement effectuer ces modifications facilement.
Asheem Patro
Dans mon cas, les bots peuvent créer des milliers de nouvelles sessions par heure. Mais nous voulons que les vraies sessions clients durent des semaines ou plus. Ainsi, le nettoyage de session par PHP n'est pas la réponse. Magento doit vérifier que le client accepte les cookies (et / ou vérifier si le client est un bot) avant de créer une session, au lieu de créer une nouvelle session pour chaque chargement de page qui n'a pas envoyé de cookie.
Buttle Butkus
1

Magento sauvegarde les données de session du client dans le dossier var / session si vous supprimez ce dossier, il supprimera toutes les données de session client

Supposons qu'un de vos clients invités ajoute 3 produits au panier si vous supprimez les données de session, les 3 produits seront supprimés du panier et que c'est une mauvaise expérience pour le client plutôt que de supprimer les données de session, vous pouvez enregistrer la session dans la base de données

Pour utiliser la base de données pour le stockage de session, il vous suffit de disposer ceci dans votre application / etc / local.xml :

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

ou vous pouvez utiliser redis session / Memcached Session cache pour enregistrer les données dans redis cache / Memcached Session

Pour utiliser un magasin de sessions memcached dans Magento, vous devez l'avoir dans votre application / 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>

Pour plus d'informations sur le stockage de session, visitez ce lien

Vaibhav Ahalpara
la source
0

Une solution consiste à créer une tâche cron qui s'exécute une fois par jour pour supprimer les fichiers souhaités.

Ici, vous pouvez voir comment configurer le travail cron: /ubuntu/2368/how-do-i-set-up-a-cron-job

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

Vous pouvez créer un script bash ou php qui fera l'opération de suppression des fichiers. Et mettez ce script dans le cron, pour être exécuté à 3 ou 4 heures du serveur, lorsque le serveur est moins utilisé. Pour tester le script, il fonctionne, vous pouvez l'exécuter manuellement.

Nikola
la source
0

Créez un fichier sh à la racine du document. Mettez le code ci-dessous à l'intérieur.

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

changer de chemin avec votre chemin document_root sans guillemets. Exécutez ce code lorsqu'il y a moins de visites sur le site.

TERMINÉ!!

Shyam Krishna Sreekumar
la source
cela fonctionne pour moi rm -rf var / session / *
Alam Zaib
Cela tue également toutes les sessions actives
Kevin Krieger