gpt4 book ai didi

PHP:优化单个字符串中多个字符串的查找和替换过程

转载 作者:行者123 更新时间:2023-11-29 17:21:04 29 4
gpt4 key购买 nike

我会在包含个人资料名称的博客文章文本中自动链接网站上现有的个人资料。为此,我...

1) ...使用 4 个单独的查询从单个数据库中的 4 个不同的 MySQL 表(包含不同类型的配置文件)中提取当前约 500 行(仅?)。

2) ...str_replace() 每个配置文件名称单独与博客文章文本中的链接(如果该配置文件名称存在)(之前尝试将它们放入搜索替换数组中,并执行单个 str_replace() )。

虽然它完成了它应该做的事情,但它显着减慢了 Blogpost 概述页面的速度。在概览页面上加载 10 个帖子(其中每个内容都会根据配置文件名称的出现情况进行检查)需要 30 秒以上的加载时间。如果没有整个自动链接过程,Blogpost 概述页面会快速加载。

我相信罪魁祸首是步骤 2)。我可以做什么来加快在单个文本字符串中查找和替换大量字符串(来自数据库)的过程?

最佳答案

根据@Devon 和@tadman 的建议,现在用户有义务处理链接配置文件。然而,我需要链接到在撰写文章时不存在但可能稍后创建的配置文件的选项。用户现在在撰写帖子时通过将自己的姓名放在大括号中来标记任何现有或 future 的个人资料。这些是通过执行 preg_replace_callback 找到的并在数据库中搜索大括号内的配置文件名称。

private function link_profile($name) {
// Put your database search(es) here
// Create link to profile
return $link_to_profile;
}

$text = preg_replace_callback("/\{(.*)\}/Usi", "link_profile", $text);

在我之前的资源耗尽分析中,有多达 5N str_replace由于考虑了配置文件名称的变体,因此需要数据库中的 N 个配置文件。现在,对于帖子文本中标记的 N 个配置文件,最多有 N 到 4N 次数据库调用,因为可能需要搜索位于各个数据库表中的 4 种不同的配置文件类型。新流程将博客加载时间缩短至约 3 秒,与之前的方法相比,提高了 10 倍以上。

关于PHP:优化单个字符串中多个字符串的查找和替换过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51250141/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com