为啥在 prod mod 的 symfony 5.3 中出现 503 错误,而在 dev mod 中却没有

Posted

技术标签:

【中文标题】为啥在 prod mod 的 symfony 5.3 中出现 503 错误,而在 dev mod 中却没有【英文标题】:Why in the symfony 5.3 in prod mod I get a 503 error while in dev mod not为什么在 prod mod 的 symfony 5.3 中出现 503 错误,而在 dev mod 中却没有 【发布时间】:2021-12-20 12:00:02 【问题描述】:

我有一个 symfony 5.3 项目,它在 dev mod 中没有问题,但是一旦我将项目设置为 prod 模式,我就会收到 503 错误。 方法如下


    public function index($username,$lesson = 'lesson1'): Response
    
        if (!$this->getUser()) 
            return $this->redirectToRoute('app_login');
        
        $student = $this->studentRepository
        ->createQueryBuilder('s')
        ->andWhere('s.isArchive = :is_archive')
        ->setParameter('is_archive', false)
        ->andWhere('s.username = :username')
        ->setParameter('username', $username)
        ->setMaxResults(1)
        ->getQuery()
        ->getOneOrNullResult();
        if(!$this->isGranted('ROLE_ADMIN'))
            if ($this->getUser()->getUsername() != $student->getAdviser()->getUsername()) 
                return $this->redirectToRoute('app_login');
            
        
        $azemoon_ha = $this->azemoonRepository
        ->createQueryBuilder('a')
        ->andWhere('a.student = :student')
        ->setParameter('student', $student)
        ->andWhere('a.isArchive = :is_archive')
        ->setParameter('is_archive', false)
        ->orderBy('a.id', 'ASC')
        ->getQuery()
        ->getResult();
        $azemoon_arr = [];
        $azemoon_arr['meta']['lesson1'] = null;
        $i = 1;
        if(is_null($azemoon_ha))
            // dd($azemoon_ha);
            foreach ($azemoon_ha as $value) 
                $az_metas = $value->getAzemoonMetas();
                // dd($az_metas);
                $c_num = 1;
                $keys = [];
                foreach ($az_metas as $am) 
                    $azemoon_arr['meta']['lesson'.$c_num][] = $am->getVal();
                    $keys['lesson'.$c_num] = $am->getName();
                    $c_num++;
                
                $azemoon_arr['name'][]     = 'آزمون '.$i;
                $azemoon_arr['tarazKol'][] = $value->getTarazKol();
                $azemoon_arr['tarazOmomi'][] = $value->getTarazOmomi();
                $azemoon_arr['tarazEkhtesasi'][] = $value->getTarazEkhtesasi();
                $i++;
            
        else
            $this->addFlash('error', 'برای دانش آموز '.$student->getName().' ازمونی تعریف نشده است');
            return $this->redirectToRoute('student.info', ['username'=> $username]);
        
        // dd($azemoon_arr['meta'], $keys);
        return $this->render('dars_status/index.html.twig', [
            'student' => $student,
            'azemoon_arr' => $azemoon_arr,
            'az_meta'     => $azemoon_arr['meta'],
            'keys'        => $keys,
            'lesson'      => $lesson
        ]);
    

根据我的评论,从 $ azemoon_ha 变量创建的那一刻起就发生了错误 您认为问题出在哪里?

【问题讨论】:

有趣的是,当我从 var/cache 路径中清除 prod 缓存时,页面同时加载。如果再次重新加载页面,则会收到 503 错误。请帮助我 【参考方案1】:

我解决了我的问题。我分享,也许它对你也有用 我的应用程序的主要问题是缓存一些数据 我使用了以下代码并且不允许它们被缓存 首先我在 config/packages/prod 路径下创建了一个名为 config.yaml 的文件,并在里面输入了如下代码

framework:
    cache:
        app: cache.adapter.null
        system: cache.adapter.null

services:
    cache.adapter.null:
        class: Symfony\Component\Cache\Adapter\NullAdapter
        arguments: [~] # small trick to avoid arguments errors on compile-time.

【讨论】:

以上是关于为啥在 prod mod 的 symfony 5.3 中出现 503 错误,而在 dev mod 中却没有的主要内容,如果未能解决你的问题,请参考以下文章

symfony 3.4 设置 prod 环境

在 dev 和 prod 环境中设置 Backbone.js 从 Symfony2 获取

symfony2.7 prod环境部署的几个问题

为啥 Symfony 5.1 不能识别“routes.php”文件中配置的路由?

带有 Symfony 2 的 Twig 显示 prod 和 dev 之间不同的 json 编码变量

在没有 mod_deflate 的 Symfony 2 中使用 gzip / 压缩