有没有办法提高PHP的整洁功能?

时间:2014-07-18 12:18:59

标签: php html performance tidy

我想问你是否知道如何提高PHP整洁功能的性能?

目前正是这样使用它:

while($ds = mysql_fetch_assoc($qry))
{
    $tidy = tidy_parse_string($ds['description']);
    $html =  tidy_parse_string($tidy, array('show-body-only'=>true, 'indent'=>true));
    $sql = "UPDATE tbl_*** SET description = '".mysql_real_escape_string($html)."' WHERE id = '".mysql_real_escape_string($ds2['id_artikel'])."'";
    sql4query($sql);

    $allerr = $allerr + tidy_error_count($tidy);
    $allwar = $allwar + tidy_warning_count($tidy);
    $msg .= $ds['id'].":\n".$tidy->errorBuffer."\n\n\n";
}

但它太慢了,拥有超过1000万个数据集。

1 个答案:

答案 0 :(得分:1)

正如其他评论已经说过的那样,可能没有合理的方法让整洁的扩展更快地完成其工作。

  

问题是,我需要清理一次这些记录。新的将通过插入数据库进行清理。

所以我们谈论了多少“旧”记录 - 数千,数万,......?

如果你无法完成“一气呵成”(cronjob,没有执行时间限制,在维护阶段“过夜”运行) - 那么另一种方法是单独完成每个记录,一次 - 当它是“需要”第一次。

向表中添加一列still_needs_to_be_cleaned或其他内容,并为所有现有记录设置为true / 1。插入新记录时,只需将其设置为false / 0。

现在,当请求记录时(由网站的访问者或其他人),你检查标志still_needs_to_be_cleaned是否仍然设置为true - 如果是,你让整齐的运行在该单个记录上,然后在数据库中更新它 - 在执行此操作时将still_needs_to_be_cleaned设置为false。

如果记录已将still_needs_to_be_cleaned设置为false - 则不需要整理操作且无需更新,您可以立即继续输出该记录。

是的,这对于第一个请求某个记录的用户来说意味着很小的延迟 - 但很可能,如果有的话,几乎不会引起注意。


如果您愿意,您甚至可以不时检查有多少记录仍然将still_needs_to_be_cleaned标志设置为true。如果没有剩下,你可以再次删除那个额外的逻辑。