【发布时间】:2016-04-14 07:34:58
【问题描述】:
我尝试调试我的慢速 php 脚本,向多个数据库和多个表提交查询,创建一个结果页面。
在我在开始时这样输入的php脚本中:
echo '<script>console.log("Start ",Date.now());</script>';
取自How can I write to console in PHP?
和php脚本末尾类似。
但由于我需要 30 秒到 1 分钟才能获得结果页面,因此在 firebug 控制台中打印的脚本从开始到结束的时间差不到一秒。
像这样:
开始1460618023753
结束1460618023923
所以我认为我在实际运行这些内联时误解了。
有人可以解释为什么会这样吗?也许建议我原则上如何调试我的 php 代码的慢速部分?
【问题讨论】:
-
从php只是一个字符串的角度来看,php根本不会执行那个。那就是javascript,它在客户端上执行(如果有的话)。
-
对于调试性能问题,您可以查看分析器,也许是 xdebug 提供的一个。不过,使用起来并非易事。一个更容易使用的替代方法是 phps
tick功能:php.net/manual/de/function.register-tick-function.php 您可以使用它来输出一个简单的字符串,例如某个日志文件的时间戳。这会产生一个已采取的步骤列表。您应该能够发现代码的哪一部分需要这么长时间。 -
php 先在服务器上编译,直到 html 输出到浏览器才运行 javascript。这就是为什么您的 javascript 之间没有时差的原因。您需要在 php 中获取时间,即。将
Date.now()更改为 php 的time()->echo '<script>console.log("Start ",'.time().');</script>';将在执行 php 时显示。 -
啊,谢谢 arkascha 和肖恩。现在我明白我得到的时间了。
标签: javascript php performance debugging