我想知道是否有人可以就如何跟踪导致速度减慢的功能提供高级答案。
我们有一个包含6千行代码的网站,有时会出现明显的减速。
我想知道追踪这些偶然减速的来源的最佳方法是什么?我们应该在每个功能上附加一个时间执行跟踪器,还是你会推荐别的东西?
这是使用PHP 5.2.9(无框架)的标准LAMP堆栈设置。
答案 0 :(得分:3)
正确追踪脚本减速的原因和位置的唯一方法是使用a profiler。
PHP中有一些可用。其中一些要求您在服务器上安装一个模块,一些使用仅使用PHP的库,另一些则是独立的。
我首选的探查器是Zend Studio,主要是因为我将它用作我的IDE。它既可以是独立的,也可以与服务器端模块(或Zend Server软件包)结合使用。允许您在本地和生产系统上进行概要分析。
然而,要查找的最简单的事情之一是循环内的SELECT
查询。它们因引起减速而臭名昭着,特别是当你在查询表中有超过几百条记录时。
另一个问题是,您是否有快速连续的多个AJAX调用,并且您正在使用默认的PHP会话处理程序(平面文件)。这可能会导致加载时间显着增加,因为IO操作正在锁定。这意味着它只能处理一次使用会话的一个请求,即使AJAX本质上是异步的。
解决这个问题的最佳方法是使用/编写一个利用数据库存储会话的自定义会话处理程序。请确保您不会使数据库连接限制饱和。
首先是:让自己成为一名合适的探路者。 ;)