我被困3天试图弄清楚这个问题的原因是什么。让我们来看看细节:
一个jquery ajax调用加载一个名为HELPER的php文件,加载时包含另一个名为F1的php文件,通过mysqli查询创建html表。 Ajax获取响应并将字符串粘贴到html DIV中。响应是一个html表。 Web服务器是apache2.2。
问题是,代码运行时间不到1秒,但响应大约需要50秒。响应只有20 KB。
Some simple HTML table code.
<?php
if (!$res = $sql->query("A QUERY")) { die('custom error 46'); }
if (!$res->num_rows > 0) { die('custom error 47'); }
$myStr = '';
while ( $row = $res->fetch_object() ) {
if ($row->summary == "1") {
$mysum = " class='qtfck-table-summary'";
$myIsSum = "Sim";
} else {
$mysum = "";
$myIsSum = "";
}
if(intval($row->id_centrodecusto) > 0) {
$mycc = "<input type='checkbox' name='" . $row->id_task . "' value='" . $row->id_centrodecusto . "' CHECKED />";
} else {
$mycc = "<input type='checkbox' name='" . $row->id_task . "' value='' />";
}
$myj = " style='padding-left:" . intval($row->depth) * 10 . "px'";
$myStr = "<tr%s><td>%s</td><td><center>%s</center></td><td><center>%s</center></td><td%s>%s</td><td><center>%s</center></td><td><center>%s</center></td></tr>";
echo sprintf($myStr,$mysum,$row->wbs,$row->depth,$myIsSum,$myj,$row->name,$row->uniqueid,$mycc);
}
?>
Html Table closure
时间:
PHP START:0.92秒 PHP结束:0.98秒 JS收到的数据:49.50秒 JS处理数据:49.56秒
我做了一些挖掘,看起来像apache / httpd进程(shell通过top命令)变得疯狂,在整个50秒的等待期间占用100%的CPU负载。
但这里有点搞笑。如果我更改了sprintf函数生成的字符串,并且假设设置了一些随机字符串,则完全没有问题。
Some simple HTML table code.
<?php
if (!$res = $sql->query("A QUERY")) { die('custom error 46'); }
if (!$res->num_rows > 0) { die('custom error 47'); }
$myStr = '';
while ( $row = $res->fetch_object() ) {
if ($row->summary == "1") {
$mysum = " class='qtfck-table-summary'";
$myIsSum = "Sim";
} else {
$mysum = "";
$myIsSum = "";
}
if(intval($row->id_centrodecusto) > 0) {
$mycc = "<input type='checkbox' name='" . $row->id_task . "' value='" . $row->id_centrodecusto . "' CHECKED />";
} else {
$mycc = "<input type='checkbox' name='" . $row->id_task . "' value='' />";
}
$myj = " style='padding-left:" . intval($row->depth) * 10 . "px'";
echo "<TR><TD>eZ6OnMCZgygePZeUQHcqbOmHQDxhDF4KzfkgOd198xhPFV2rRezlIqBdJLY2TcNlO0PLUmK6CQI9PQMZgkLrcoeYIYhM0x9xK4yQXIFb5SLdq32</TD><TD>UTuQPG9WCbOswuJMdkkckMoAW49C71IN9qKdk8OAdRRV3ZuCYxM5GEZKrXXrwE7cWHKTcXTiO4KwGjh1ejENvduZvEVkwA3zoHbWkzEjtFa1GMaNzD2rqswEDSoQix2CLziBNiHD8zliSWu5rvU8wd6dodWBvubvog</TD></TR>";
}
?>
Html Table closure
对此请求的响应大小为50 KB。
时间:
PHP START:0.78秒 PHP结束:0.81秒 JS收到的数据:1.13秒 JS处理数据:1.19秒
我已经尝试过:
任何人都有线索?
祝你好运。
答案 0 :(得分:1)
我不知道为什么但问题是由“中心”html标签引起的。不知何故,中心标签的存在减慢了响应速度。我刚删除它们并使用“text-align:center”创建了适当的css类,问题就消失了。
我也尝试过避免使用PHP来回显HTML。即使这样,标签也会再次出现问题。
这是修复。我只是没有解释它。