我在web.php文件中使用这个函数创建了192个html页面,但是当它创建第五个页面时给了我错误。
function()
{
$homepage = Page::find(1);
$articles_show = Article::where(function ($query) {
$query->where(function ($query2) {
$query2->where('draft', 0)->whereNull('publication_date');
})->orWhere(function ($query2) {
$query2->where('draft', 0)->where('publication_date', '<=', DateHelper::currentDateTime());
});
})->orderBy('publicated_at', 'DESC')->get();
$last_page = ceil($articles_show->count() / 8);
$articles = [];
$count = 0;
for ($i = 5; $i <= $last_page; $i++) {
$filename = 'page'.$i.'.html';
$max_desc_id = $i * 8;
$min_desc_id = $max_desc_id - 7;
foreach ($articles_show as $article) {
$count++;
if ($article->desc_id >= $min_desc_id && $article->desc_id <= $max_desc_id) {
$articles[] = $article;
}
if (($count % 8) == 0) {
$count = 0;
File::put(
resource_path('views/allArticlesHtml/'.$filename),
view('allArticlesTemplate')->with([
"articles" => $articles,
"homepage" => $homepage,
"this_page" => $i,
"last_page" => $last_page
])->render()
);
continue;
}
}
$articles = [];
// if(($count % 8) == 0){
// }
}
}
页面创建正确,但它的方式太慢。我真的不知道如果我这样做是正确的方式或没有,我仍然是非常新的编程,我不知道如何改善或重新创建此代码。
2条答案
按热度按时间cgyqldqp1#
前几天我遇到了这个问题。您可以执行以下变通方案:
每次你创建1文件下的命令,把这个:
它会将时间限制重置为30秒,并且每次都会重置。
参考:https://www.php.net/manual/en/function.set-time-limit.php
mrwjdhj32#
我读了你的代码。我会给你建议最好的解决方案。
为什么你是尝试到创建html文件与相同的内容?你可以轻松地使用刀片引擎和扩展一个模板在不同的文件. to resolve这错误
Maximum execution time of 60 seconds exceeded
你需要到增加max_execution_time
值在php.ini
文件.或把ini_set('max_execution_time', 180)
在这顶端的php文件.但是如果你想要一种创建文件的替代方法,请描述你最初的问题。