【问题标题】:symfony2 site goes down almost everydaysymfony2 网站几乎每天都宕机
【发布时间】:2015-10-08 16:26:13
【问题描述】:

我在一个 symfony 网站上工作,它几乎每天都在继续下降,所以我必须清除缓存并 chmod 所有缓存文件夹内容来解决问题。
清除缓存是我的快速解决方案,但有时它不起作用。
此外,我认为该网站并没有完全崩溃,它仍然适用于某些用户但不适用于其他用户(他们打电话给我解决问题,但当我访问该网站时它对我有用)
在 prod 日志文件中,我收到一个我不明白的错误:

[2015-10-08 16:43:18] request.INFO:匹配的路线“产品”。 {"route_parameters":{"_controller":"FM\FmBundle\Controller\HomeController::productAction","_route":"product"},"request_uri":"https://first1-market.com/product/puma-pu102601002u"} []
[2015-10-08 16:43:18] security.INFO:填充了 TokenStorage 带有匿名令牌。 [] []
[2015-10-08 16:43:18] 请求。关键: 未捕获的 PHP 异常 RuntimeException:“控制器 “FM\FmBundle\Controller\HomeController::productAction()”要求 您为“$product_slug”参数提供了一个值(因为有 没有默认值或因为后面有一个非可选参数 这个)。”在 /home/firstmarlo/app/cache/prod/classes.php 第 2595 行 {“异常”:“[对象](RuntimeException(代码:0):控制器 \"FM\FmBundle\Controller\HomeController::productAction()\" 需要 为 \"$product_slug\" 参数提供一个值(因为 没有默认值或因为有非可选参数 在这个之后)。在 /home/firstmarlo/app/cache/prod/classes.php:2595)"} []

产品路线

product:
    path:     /product/{product_slug}
    defaults: { _controller: FMFmBundle:Home:product }

产品操作

public function productAction($product_slug)
    {
        $product=$this->getDoctrine()->getEntityManager()->getRepository('FMFmBundle:Products')->findOneBy(array('slug'=>$product_slug));
        $collection=$product->getCategory()->getCollection();
        return $this->render('FMFmBundle:Product:index.html.twig',array('product'=>$product,'color'=>$collection->getColor()));
    }

此操作的链接

{% for product in FmarketProductService.getRecommanded() %}
<a href="{{  url('product',{'product_slug': product.slug})}}">

这工作正常,但我不知道为什么我在日志文件中收到此错误以及网站为什么会完成
有解决此问题的想法或解决方法吗?

【问题讨论】:

  • 隐藏该错误(或防止出错)的非常快速和肮脏的解决方案,可以设置一个默认值(可能像public function productAction($product_slug = null))然后检查并在收到null时返回一些东西.

标签: php symfony caching


【解决方案1】:

问题是在实体记录的某处,没有生成 slug。 当我处理从遗留项目中导入的数据时,我遇到了同样的问题。

最好的想法是创建重新生成 slugs 的命令。

看http://symfony.com/doc/current/components/console/introduction.html

在我的命令中,我做了类似的事情

$em = $this->getContainer()->get('doctrine')->getManager();
    $pages=$em->getRepository('PoznetAdminBundle:page')->findAll();
        $ile=count($pages);
        for($i=0;$i<$ile;$i++){
             $pages[$i]->setSlug($pages[$i]->getTitle());
        }
    $em->flush();

我的 slug 基于标题字段

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-14
    • 2022-01-14
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多