由于php :: session_start,CakePHP页面加载缓慢

时间:2012-11-29 04:00:35

标签: performance cakephp xdebug kcachegrind

我发现我的CakePHP应用程序中没有调用数据库的页面需要大约4秒才能加载,这太慢了。

我尝试了以下事情无济于事:

  • 重新启动计算机
  • 重新安装Uniserver
  • 将调试级别从2切换到0
  • 从FileCache切换到APC缓存

我有一个XDebug探查器转储,并在KCachegrind中观察到最耗时的函数是php :: session_start,并且它是由\ webroot \ index.php调用的。我还使用CakePHP调试工具包检查了性能,发现最耗时的项目是“核心处理(源自$ _SERVER [”REQUEST_TIME“])”。

如何才能让我的网页加载速度更快?

如果我的硬件是相关的,我已经描述了以下操作环境:

  • ThinkPad T400
  • Intel Core 2 Duo处理器
  • OCZ SSD
  • 4 GB RAM
  • Windows 7 64位版本
  • CakePHP 2.2.3版

作为一个起点,我将我的php.ini工作副本与Uniserver提供的php.ini的生产版本进行了比较,发现了以下主要差异:

  • PHP错误级别(E_ALL,E_NOTICE,E_STRICT等)
  • $ php_errormsg logging
  • mysqlnd.collect设置(其中2个)
  • 禁用Xdebug

然后,我在比较之前和之后做了一些。绿色细胞是<= 1秒的值,这是人类感知某物“非常快”的限制。我意识到实际上,一个人必须<= 0.1秒才能“瞬间”,但这似乎有点不切实际。

Comparison of processing time required to display CakePHP pages

(要查看完整尺寸的图片,请转到http://sdrv.ms/YomWdO的Windows SkyDrive。)

我在php.ini的“After”版本下运行时尝试使用网站应用程序并且事情并不糟糕但是当我启动大多数页面时,我仍然觉得我遇到了路障,特别是当我可以启动时一些页面立即。

3 个答案:

答案 0 :(得分:1)

检查会话配置并确保正确设置会话存储。例如。如果您正在使用数据库,请确保它可以在快速网络或本地访问,并且该用户具有所有必需的权限。如果会话驻留在文件系统中,请检查可用性和权限。最后,检查一下你的php配置;这看起来不像是蛋糕问题。

答案 1 :(得分:0)

解决方案是更改以下设置:

  • PHP错误级别(E_ALL,E_NOTICE,E_STRICT等)
  • $ php_errormsg logging
  • mysqlnd.collect设置(第二个)
  • 禁用Xdebug

然后,获取专用的生产服务器,这样您就不必继续切换php.ini的副本。

最后,如果这不能加快速度,而且这只是一个个人项目(尽管它可能是一个关键的个人项目),那就放弃并继续生活。

答案 2 :(得分:-1)

编辑文件core.php

解决了同样的问题

Configure::write('debug', 2);更改为Configure::write('debug', 0);

是2到0

  

路径:app / config / core.php