Windows平台下php session设置导致的问题

下午刚回家就有人报告45s服务器老是500,于是爬上去看了下。发现php老重启,于是把iis重启了一下。接着顺手把mysql也重启了一下,这一重启把mysql搞得再起不能了= =。半天没搞懂为什么。后来把系统也重启了还是没法恢复,mysql错误日志和windows系统日志都看不出问题,mysql启动后就卡住了。

没办法。打开万能的Process Monitor,这才发现mysql在不断的读取C:\Windows\Temp下的文件,且文件名都是sess_开头的,这才发现是php session搞的鬼。本来以前php的session保存目录都被设置在php自身目录下的tmp目录中的,但是上次更新php后iis 的php manager自动给设回C:\Windows\Temp了。没办法用del sess_*来删除这些session文件。然后重设的php及mysql的配置。

php设置参考了php session.save_path设置中的N值设置来优化磁盘性能,结合从php源码目录中的ext/session下找到的mod_files.bat来辅助生成session子目录。mod_files.bat的参数如下

Usage mod_files.bat <basedir> <depth> [hash_bits]

Where <basedir>   is the session directory
<depth>     is the number of levels defined in session.save_path
[hash_bits] is the number of bits defined in session.hash_bits_per_character

php默认配置session.hash_bits_per_character为5,我打算把N设为3,于是输入”mod_files.bat tmppath 3 5“来生成session的临时文件目录。然后相应的把php配置文件中的session.save_path值改成”3;tmppath“,上面2处的tmppath为选择的session存储路径,建议php配置文件中用绝对路径。

mysql则在配置文件中的[mysqld]下添加了tmpdir的配置,在mysql所在目录新建了一个temp文件夹然后把tmpdir的值指向了那个目录。

至此问题解决了

此条目发表在, 分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据