首页 > PHP,redis > 通过多次点击超链接说说我对session文件锁的新认识
2014
11-21

通过多次点击超链接说说我对session文件锁的新认识

最近在研究redis的更新问题,如果分解到每一个操作中倒是没有问题,但是之前设计程序结构的时候没有很好的缓存机制,后来在pycon2014上遇到了老平,跟老平交流的时候还没有感觉到什么,回来后,发现受益不少,比如他们做sim芯片的调试的时候以前用c自己写,现在用python框架,而我的redis更新一直是一个难题,难点在于时间太长了。

我换成ajax异步更新怎么样?

换成ajax异步更新后发现一个问题就是,当执行更新的时候,别的点击都不能够生效

于是转过头来问问老平,老平没看到信息,某小菜倒是看到了给我讲明白了道理

php在一个页面没有执行完的情况下,不会释放那个回话的文件锁,也就是session文件锁

当同一个用户执行一个长时间的查询页面时,点击其他页面时将会等待上一个页面执行结束后才会执行下一个页面。


那么如何解决呢 就是将文件方式的session更改为其他方式存储,就是不会产生文件锁的方式

我在使用过程中用了redis

使用ini_set将session更改为redis方式,具体php脚本为

ini_set('session.save_handler','redis');
ini_set('session.save_path','tcp://192.168.1.123:11211');


还有另外一种方式就是队列方式或者使用任务框架

http://blog.csdn.net/fdipzone/article/details/7166520
http://blog.163.com/lgh_2002/blog/static/44017526201281394856306/  


名字叫做gearman   很好听的名字。

最后编辑日期:
作者:hainuo
hainuo
这个作者貌似有点懒,什么都没有留下。
https://shenghuo.alipay.com/transfer/aaCollect/pay.htm?id=18656668&sign=1e0c1245ffd24ee46f648ea278825f49
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!