我想问您,您是否知道如何提高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";
}但是它太慢了,有超过一千万个数据集。
发布于 2014-07-18 13:12:21
正如其他人已经说过的,可能没有合理的方法让整洁的扩展更快地完成它的工作。
问题是我得把这些记录清理一次。新的将通过插入数据库来清除。
那么,我们谈论的“旧”唱片有多少--数千张,一万张,…?
如果你不能“一步一步地完成”(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。如果没有剩下的,您可以再次删除这个额外的逻辑。
https://stackoverflow.com/questions/24824877
复制相似问题