代码之家  ›  专栏  ›  技术社区  ›  Sanjok Gurung

Symfony,性能失败。而在一条路径上运行繁重的脚本,其他路径将变得不可访问

  •  1
  • Sanjok Gurung  · 技术社区  · 7 年前

    在我们的控制器中,我们有一个函数来呈现从数据库返回的记录。 所以为了测试我试图用一个循环阻塞系统,

     this function runs at path {baseurl}/countries
    //$countries fetches all records from the "countries" table
    for($i = 0; $i<=200000; $i++) {
             foreach ($countries as $country) {
                 echo $country . '<br>';
             }
        }
    

    循环这个数组200万次,当它运行时,我们尝试访问同一个symfony中的其他路径,这个symfony不过是从控制器呈现的静态细枝模板。但即使是渲染它,也要花很长时间。

    访问 {baseurl}/register 它只包含静态html表单。

    检查语法错误。一个也没有 根据更改了我的OPCache设置 this . 重新启动服务器,重新启动电脑。没有任何改善。

    我该怎么办,这不是我的apache问题,我尝试用我的apache访问其他站点,结果加载得很好。 Htop 只显示apache使用了13%的CPU,但我的symfony应用程序在执行一个脚本时,其他路径变得难以访问。 我不知道该怎么办,因为这不是我的PC资源问题,而是框架性能问题。这个问题正常吗??

    1 回复  |  直到 7 年前
        1
  •  2
  •   markrosario    7 年前

    这是由PHP的“会话锁定”方式造成的 https://ma.ttias.be/php-session-locking-prevent-sessions-blocking-in-requests/

    # code copied from link above
    <?php
    ...
    // This works in PHP 5.x and PHP 7
    session_start();
    
    $_SESSION['something'] = 'foo';
    $_SESSION['yolo'] = 'swag';
    
    session_write_close();
    
    // Do the rest of your PHP execution below
    

    推荐文章