超过了最大执行时间60秒,在laravel中创建了大量的html页面

huwehgph  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(131)

我在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){
            
        // }
    }
}

页面创建正确,但它的方式太慢。我真的不知道如果我这样做是正确的方式或没有,我仍然是非常新的编程,我不知道如何改善或重新创建此代码。

cgyqldqp

cgyqldqp1#

前几天我遇到了这个问题。您可以执行以下变通方案:
每次你创建1文件下的命令,把这个:

set_time_limit(30);

它会将时间限制重置为30秒,并且每次都会重置。
参考:https://www.php.net/manual/en/function.set-time-limit.php

mrwjdhj3

mrwjdhj32#

我读了你的代码。我会给你建议最好的解决方案。
为什么你是尝试到创建html文件与相同的内容?你可以轻松地使用刀片引擎和扩展一个模板在不同的文件. to resolve这错误Maximum execution time of 60 seconds exceeded你需要到增加max_execution_time值在php.ini文件.或把ini_set('max_execution_time', 180)在这顶端的php文件.
但是如果你想要一种创建文件的替代方法,请描述你最初的问题。

相关问题