Answers:
如果您使用cron作业删除所有会话,则将删除所有客户购物车,并且人们会使您的网站生气。
建议您查看会话文件,看看它们是否可疑。
尝试从此处检查访问者IP地址在哪里:https://www.iplocation.net/
例如,如果您发现一堆中文IP,而您的网站不是中文,则可能是这些机器人在浪费您的带宽。您应该在Apache设置或中阻止其IP范围.htaccess。
(我相信您甚至可以在Apache中进行基于国家/地区的过滤,但我认为这会减慢响应时间。我没有尝试过。)
Magento 1.x(不确定2.x)似乎也存在一个错误,即当客户端不接受cookie时,它会为每个请求创建一个新会话。因此,诸如Googlebot,Bingbot,SemrushBot等机器人均会生成大量会话文件。
对于我的服务器,我唯一需要做的就是摆脱那些机器人会话文件。在没有时间查找和修复Magento错误之前,我已经由cron运行了一个Shell脚本,以删除包含以下字符串的所有会话文件:
与其使用自定义脚本,不如通过在php.ini文件中指定正确的值来使PHP为您清除它们更有意义。如果您确保该session.gc_maxlifetime值具有相对较小的值(但> =您的会话cookie超时),例如1440并且session.gc_probability设置为1,则内置的PHP会话垃圾收集器应为您删除文件。
Magento将客户的会话数据保存在 var / session文件夹中,如果删除该文件夹,它将删除所有客户的会话数据
假设您的来宾客户之一将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>
有关会话存储的更多信息,请访问此链接
一种解决方案是您可以创建每天运行一次的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路径更改路径,不带引号。当网站点击量较少时,运行此代码。
完成了!