AJAX+PHP: 小心 session 锁定
作者:faisun 发布日期:2006-05-22
最近做一个功能,在管理后台一个 frame 里有 ajax 在不断刷新 run.php 文件,而 run.php 的执行一次的时间可能要十几秒钟。
然而却出现了很奇怪的问题:
管理后台中点击其他的页面,要很久才加载完;停止 ajax 的刷新,其他页面的加载速度恢复正常。似乎服务器的资源被 ajax 的刷新占光了。然而, run.php 的运行耗费的资源是没那么严重的;而且,网站的前台页面,加载却一切正常。
分析了良久,才发现这样的问题:原来 run.php 和其他的管理页面一样,都用了 session 来维持登录。 run.php 的返回需要十几秒,虽然它占用的资源不多,但是 session 却被它“锁定”了(可能是锁定了相应 session 记录文件),其他的页面需要等待它返回,才能继续运作。
解决的方法便是, run.php 不要用 session。因为 run.php 和其他的页面一样都是 include 同一个文件的,所以我把整个后台改为采用 cookie 模式。
然而却出现了很奇怪的问题:
管理后台中点击其他的页面,要很久才加载完;停止 ajax 的刷新,其他页面的加载速度恢复正常。似乎服务器的资源被 ajax 的刷新占光了。然而, run.php 的运行耗费的资源是没那么严重的;而且,网站的前台页面,加载却一切正常。
分析了良久,才发现这样的问题:原来 run.php 和其他的管理页面一样,都用了 session 来维持登录。 run.php 的返回需要十几秒,虽然它占用的资源不多,但是 session 却被它“锁定”了(可能是锁定了相应 session 记录文件),其他的页面需要等待它返回,才能继续运作。
解决的方法便是, run.php 不要用 session。因为 run.php 和其他的页面一样都是 include 同一个文件的,所以我把整个后台改为采用 cookie 模式。