Heim  >  Artikel  >  Backend-Entwicklung  >  【php】nginx php-fpm “session锁”问题

【php】nginx php-fpm “session锁”问题

WBOY
WBOYOriginal
2016-06-23 14:35:321070Durchsuche

nginx + php-fpm 环境的部署的文章:

http://blog.s135.com/nginx_php_v6/

 

关于php-fpm的百度百科介绍:

http://baike.baidu.com/view/4168033.htm

 

笔者在实际运用这套环境中,遇到了一个诡异的问题,问题的具体描述是:

浏览器同时向网站请求php页面的时候,后开始的页面需要等待前一个页面拿到response后才能开始执行。

 

问题发现的情况是,由于网站某个页面的后台接口问题,又没有设置超时机制,导致这个页面响应龟速。 在等待这个页面的时候,再打开其他网站页面是无法打开的,要等到这个页面返回,才会执行其他页面。

 

经过调查,将问题锁定在了session上,因为网站使用了自己做的mvc框架,框架的action执行前,默认会session_start()。 因为以前网站是部署在apache上,不会有什么问题,也埋下了隐患。等到公司的webserver环境迁移到nginx环境上,这个问题就应该开始了。

 

具体原因不清楚,但可以确定的是 session和nginx+php-fpm环境这种组合会出现的问题(已经通过实验确定了)。

 

解决方式是,修改了框架,关闭默认打开的session,在需要SESSION的action类的构造函数中打开session,虽然当这类页面有并发的时候,依然会有“session锁”【笔者想不到专业的名字,有人知道这个问题原因的话,欢迎指教】的问题,但是这类页面在我们的网站里只占了一小部分。

 

算是个临时解决方案吧。

 

张宴文章中介绍的nginx+php-fpm环境性能很牛,但是作为一个比较新的解决方案,相比较apache + php-cgi 的传统方案来说,可能存在一些小的问题。

 

希望本文能给大家些帮助。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:使用php://inputNächster Artikel:linux安装php