Magentoセッションファイルの削除


8

フォルダーvar / sessionは、サーバー上で大きなinnode使用を引き起こす非常に大きなデータ量を常に保持します。

セッションフォルダーからファイルを削除するたびに、innodeの使用量が最小限に抑えられます。

たとえば、24時間ごとにこれらのセッションファイルを自動的に削除する方法を確認したいと思います。

私はMAgentoを使い始めたばかりなので、これまでのところ初心者なので、大規模な説明をいただければ幸いです。

私はどういうわけかcpanelまたはそのようなsmtを通じてcronジョブを作成する必要があることを知っています。

回答:


2

cronジョブを使用してすべてのセッションを削除すると、すべての顧客のショッピングカートが削除され、人々はサイトを怒らせます。

セッションファイルを調べて、疑わしいかどうかを確認することをお勧めします。

ここから訪問者のIPアドレスの場所を確認してください:https : //www.iplocation.net/

たとえば、中国語のIPがたくさんあり、ウェブサイトが中国語ではない場合、これらはおそらく帯域幅を浪費しているボットです。Apacheの設定またはでIP範囲をブロックする必要があります.htaccess

(Apacheで国ベースのフィルタリングを実行することもできると思いますが、応答時間が遅くなると思います。私はそれを試していません。)

Magento 1.x(2.xについては不明)には、クライアントがCookieを受け入れない場合、すべてのリクエストに対して新しいセッションを作成するバグがあるようです。したがって、Googlebot、Bingbot、SemrushBotなどのボットはすべて、膨大な数のセッションファイルを生成します。

私のサーバーでは、ボットセッションファイルを削除するだけで済みました。Magentoのバグを見つけて修正する時間ができるまで、これらの文字列を含むすべてのセッションファイルを削除するために、cronによって実行されるシェルスクリプトがあります。

  • Googlebot
  • ビンボット
  • クモ
  • セムラシ
  • AhrefsBot
  • UptimeRobot
  • spbot

バグを修正するための解決策を見つけましたか?1.2 Mioを超えるファイルを削除しましたが、これはとんでもないことです。
マルコ

ファイルをクリーンアップするために書いたbashスクリプトは最初はうまくいきましたが、パターンは変わり続けているため、多くのメンテナンス作業が必要です。したがって、コードを掘り下げて実際の解決策を見つけることを計画しています。コードは、クライアントがCookieを受け入れるかどうかを確認し(ボットはCookieを受け入れないため)、それらのクライアントのセッションを作成しないでください。
バトルButkus

完了したら、コードを共有してもらえますか?現時点では、M2E Pro、Google、Bingにのみ問題があります。セッションファイルのヒープを作成するこれら3つのこと。
マルコ

1

カスタムスクリプトを使用するよりも、php.iniファイルに適切な値を指定することで、PHPにスクリプトをクリアさせる方が理にかなっています。のsession.gc_maxlifetime値が比較的小さい(ただし、セッションCookieのタイムアウトが> =)eg1440で、session.gc_probability1に設定されている場合、組み込みのPHPセッションガベージコレクターがファイルを削除します。


Magentoのftpディレクトリでphp.iniファイルが見つからない場合、どのように変更しますか?私はファイルtest.phpを作成してini_setでそれらの値を設定しようとしましたが、文字列はそれらの値を変更しません。助けてください
Andrius

それが機能しない、他の解決策はありましたか?助けてください
ジェニスサミュエル2017

Magentoのftpディレクトリ内にphpinfo.phpという名前のファイルを作成し、「phpinfo();」を配置するだけです。次に、ブラウザにロードしてみてください。php.iniがサーバーのどこにあるかがわかります。そうすれば、おそらくこれらの変更を簡単に行うことができます。
Asheem Patro 2017

私の場合、ボットは1時間あたり数千もの新しいセッションを作成できます。ただし、実際の顧客セッションが数週間以上続くことを望んでいます。したがって、PHPによるセッションのクリーンアップは答えではありません。Magentoは、セッションを作成する前に、Cookieを送信しなかったページの読み込みごとに新しいセッションを作成するのではなく、クライアントがCookieを受け入れることを確認する(クライアントがボットかどうかを確認する)必要があります。
バトルButkus

1

Magentoは、顧客のセッションデータを var / sessionフォルダに保存します。このフォルダを削除すると、すべての顧客セッションデータが削除されます

ゲストデータの1つがカートに3つの製品を追加すると仮定します。セッションデータを削除すると、カートから3つの製品がすべて削除され、セッションデータを削除するのではなく、データベースにセッションを保存できます。

データベースをセッションストレージに使用するには、これをapp / etc / local.xmlに設定するだけです。

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

または、redisセッション/ Memcachedセッションキャッシュを使用して、redisキャッシュ/ Memcachedセッションにデータを保存できます。

Magentoでmemcachedセッションストアを使用するには、これを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>

セッションストレージの詳細については、このリンクにアクセスしてください


0

1つの解決策は、1日に1回実行されるcronジョブを作成して、必要なファイルを削除することです。

ここでは、cronジョブのセットアップ方法を確認できます。https//askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job

cronjobのcpanelチュートリアル:http : //support.hostgator.com/articles/cpanel/how-do-i-create-and-delete-a-cron-job

ファイルの削除操作を行うbashまたはphpスクリプトを作成できます。このスクリプトをcronに入れて、サーバーの使用率が低いときにサーバー時間の午前3時または4時に実行されるようにします。スクリプトが機能しているかどうかをテストするには、手動で実行します。


0

ドキュメントルートにshファイルを作成します。その中に以下のコードを入れてください。

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

引用符なしのdocument_rootパスでパスを変更します。サイトヒットが少ないときにこのコードを実行します。

できました!


これは私にとって
有効

これにより、アクティブなセッションもすべて強制終了されます
Kevin Krieger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.