gpt4 book ai didi

php - 长时间运行的控制台命令速度变慢

转载 作者:行者123 更新时间:2023-11-29 11:09:28 24 4
gpt4 key购买 nike

初始文本

我在 Laravel 项目中创建了控制台。该命令从一个表中获取 html 数据,通过 preg_match 检查每条记录的两个模式匹配。如果它返回 true,则正在对其他表的记录进行更新,该记录与当前在 foreach 循环中处于焦点的第一个表中的记录具有相同的属性。记录数为 cca 3500

在 cca 150 次迭代之后,命令速度显着减慢,我需要一天时间才能完成命令。

我在这个论坛上阅读了所有类似的问题,但它们对我没有帮助。甚至没有关于强制垃圾收集的答案。

代码如下:

$ras = RecordsA::all();
$pattern = '/===this is the pattern===/';
foreach($ras as $ra){
$html = $ra->html;
$rb = RecordB::where("url", $ra->url)->first();
$rb->phone = preg_match($pattern, $html, $matches) ? $matches[1] : $rb->phone;
$rb->save();
}

我正在寻找有关 preg_match 性能的可能问题,但没有成功。

有人遇到过这样的问题吗?

<小时/>

对于 MMMTroy 更新

我忘了说我也尝试过自定义,但与您的代码类似:

$counter = DB::select("select count(*) as count from records_a")->first();
//Pattern for Wiktor Stribiżew :)
$pattern = '/Telefon:([^<])+</';
for($i = 0; $i < $counter->count; $i+=150){
$ras = RecordsA::limit(150)->offset($i);
foreach($ras as $ra){
$html = $ra->html;
$rb = RecordB::where("url", $ra->url)->first();
$rb->phone = preg_match($pattern, $html, $matches) ? $matches[1] : $rb->phone;
$rb->save();
}
}

最佳答案

“通过偏移量分页”的顺序是(N*N)。使用 Order(N) 会更好,所以“记住你离开的地方”。

More discussion .

关于php - 长时间运行的控制台命令速度变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40855717/

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