回答:
cronジョブを使用してすべてのセッションを削除すると、すべての顧客のショッピングカートが削除され、人々はサイトを怒らせます。
セッションファイルを調べて、疑わしいかどうかを確認することをお勧めします。
ここから訪問者のIPアドレスの場所を確認してください:https : //www.iplocation.net/
たとえば、中国語のIPがたくさんあり、ウェブサイトが中国語ではない場合、これらはおそらく帯域幅を浪費しているボットです。Apacheの設定またはでIP範囲をブロックする必要があります.htaccess。
(Apacheで国ベースのフィルタリングを実行することもできると思いますが、応答時間が遅くなると思います。私はそれを試していません。)
Magento 1.x(2.xについては不明)には、クライアントがCookieを受け入れない場合、すべてのリクエストに対して新しいセッションを作成するバグがあるようです。したがって、Googlebot、Bingbot、SemrushBotなどのボットはすべて、膨大な数のセッションファイルを生成します。
私のサーバーでは、ボットセッションファイルを削除するだけで済みました。Magentoのバグを見つけて修正する時間ができるまで、これらの文字列を含むすべてのセッションファイルを削除するために、cronによって実行されるシェルスクリプトがあります。
カスタムスクリプトを使用するよりも、php.iniファイルに適切な値を指定することで、PHPにスクリプトをクリアさせる方が理にかなっています。のsession.gc_maxlifetime値が比較的小さい(ただし、セッションCookieのタイムアウトが> =)eg1440で、session.gc_probability1に設定されている場合、組み込みのPHPセッションガベージコレクターがファイルを削除します。
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>
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時に実行されるようにします。スクリプトが機能しているかどうかをテストするには、手動で実行します。
ドキュメントルートにshファイルを作成します。その中に以下のコードを入れてください。
#!/bin/bash
# Shell script for cleaning session
path=your document_root path goes here
cd $path
rm -rf var/session/*
引用符なしのdocument_rootパスでパスを変更します。サイトヒットが少ないときにこのコードを実行します。
できました!