[英]Why does my PHP code doesn't work anymore for no reason?
我的代码中有一个for循环。 我在这部分代码上没有改变任何东西大约5-6天,我从来没有遇到任何问题。
从昨天起我试图重新加载我的代码,它总是给我这个错误:
Maximum execution time of 30 seconds exceeded - in LogController.php line 270
好吧,我无法解释为什么,但也许有人可以看一下。
这是我在第270行的代码。
$topten_sites = [];
for ($i = 0; $i <= count($sites_array); $i++) {
if ($i < 10) { // this is 270
$topten_sites[] = $sites_array[$i];
}
}
$topten_sites = collect($topten_sites)->sortByDesc('number')->all();
正如我所说,它工作得很好,为什么它给我一个错误? 如果我取消注释这些行以及包含$ topten_sites数组的每个其他行,代码将再次运行。
这看起来不对:
for ($i = 0; $i <= $sites_array; $i++) {
if ($i < 10) { // this is 270
$topten_sites[] = $sites_array[$i];
}
}
如果$sites_array
是一个数组,那么将它与一个整数进行比较是没有意义的,所以你可能有一个永无止境的循环。
如果你只需要另一个数组中的前10个元素,你可以用以下代码替换你的循环:
$topten_sites = array_slice($sites_array, 0, 10);
如果您只需要前10个结果,为什么要迭代整个数组?
for ($i = 0; $i < 10; $i++) {
$topten_sites[] = $sites_array[$i];
}
回答实际答案; 代码永远不会“无缘无故”停止工作。 代码有效或无效,两者都有原因。 changed compared to your previous tests. 如果它停止工作,与之前的测试相比发生变化。 “有时候它有效,有时它不会”落入同样的逻辑。 每次代码总是表现完全相同,只是一些参数已经改变,你必须找到哪一个。
在你的情况下,我猜你的阵列中的条目已经增加。 PHP和数组在速度方面不是最好的朋友,数组很慢。 当你测试它时,你的阵列很可能是较小的(开始时不是最快的),但现在使用当前的数量它只是达到了30秒的阈值。
也可能是这段代码之前的代码的一部分需要花费很多时间(比如说突然28秒而不是20秒),而你的循环(从未改变过)会在常规的3秒内完成它的工作,现在运行陷入困境
像这样使用它:
$topten_sites = [];
for ($i = 0; $i <= 10; $i++) {
$topten_sites[] = $sites_array[$i];
}
$topten_sites = collect($topten_sites)->sortByDesc('number')->all();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.