有没有办法提高PHP的性能';什么是整洁的功能?

有没有办法提高PHP的性能';什么是整洁的功能?,php,html,performance,tidy,Php,Html,Performance,Tidy,我想问您是否知道一种提高PHP tidy函数性能的方法 现在就这样使用它: 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

我想问您是否知道一种提高PHP tidy函数性能的方法

现在就这样使用它:

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万个数据集。

正如其他评论所说,可能没有合理的方法让tidy扩展更快地工作

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

那么,我们谈论的是多少“旧”唱片——数千张,十分之一张

如果您不能“一次完成所有记录”(cronjob,没有执行时间限制,在维护阶段“通宵”运行),那么另一种方法是在第一次“需要”时单独执行每个记录一次

将列添加到表中,
仍然需要\u清理
或其他内容,并将所有现有记录的值设置为true/1。插入新记录时,只需将其设置为false/0

现在,当一条记录被请求时(由网站访问者或其他什么人请求),您可以检查标志
仍然需要清理
是否仍然设置为true–如果是,您让tidy在该记录上运行,然后在数据库中更新它–执行此操作时将
仍然需要清理
设置为false

如果记录已
仍需要清理
设置为false,则无需执行任何整理操作,也无需更新,您可以立即继续输出该记录

是的,这意味着第一个请求某个记录的用户会有一点延迟——但很可能,这几乎不会引起注意,如果有的话



如果您愿意,您甚至可以不时检查有多少记录仍将
still\u needs\u to\u cleaning
标志设置为true。如果没有剩余的,您可以再次删除该额外逻辑。

为什么要调用两次
tidy\u parse\u string
而不是批量整理所有记录(其中许多记录可能永远不会被查看),当有人试图查看/编辑某个特定记录时,您只需运行tidy函数即可。@FuzzyTree我实现了它,如文档所示。但你是对的,我不应该执行它两次。只要用
--dontsuck
标志重新编译它就可以了。。对不起,我无法抗拒;P说真的,我不知道你期待什么样的神奇答案。它可能已经尽可能快地完成了它的工作。除了咧嘴笑着忍受,你可能什么也做不了。解析HTML是一项非常昂贵的任务,如果它在某种程度上被破坏,更是如此。谢谢你的回答,正如前面提到的,我谈论的是超过1000万条记录。问题是服务器的内存负载导致测试系统崩溃。我正在一个cronjob中以5000条记录的步骤“清理”数据库,但速度太慢了。所以我想我必须像你提到的那样去做,我希望避免。