首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么要在一个站点上工作,而不是在另一个站点上工作?

为什么要在一个站点上工作,而不是在另一个站点上工作?
EN

Stack Overflow用户
提问于 2020-04-14 18:45:29
回答 2查看 113关注 0票数 1

我在php中使用这个js在迭代时显示文件名。我有这个完美的工作在6个不同的网站,他们都有相同的确切代码(WordPress插件)。但是,在另一种情况下,只有在php完成后才会更新html。在同一个共享主机上有4个站点,因此不工作的站点的服务器设置应该与不工作的站点相同。就像妇产科医生没有开始也不脸红。

代码语言:javascript
运行
复制
    add_action('init', array($this, 'Do_output_buffer'));

    function Do_output_buffer() {
        ob_start();
    }
代码语言:javascript
运行
复制
   echo "<script>
      const element = document.querySelector('#filefind');
      </script>";
   @ob_flush();
   @flush();
代码语言:javascript
运行
复制
   echo "<script>
        element.innerHTML = `<div>" . $value . "</div>`;
        </script>";
   @ob_flush();
   @flush();

谢谢!

编辑每个请求

代码语言:javascript
运行
复制
        $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->path), RecursiveIteratorIterator::SELF_FIRST);        
        foreach ($objects as $filename => $value) {
             echo "<script>element.innerHTML = `<div>" . $filename . "</div>`;  
             </script>";
             @ob_flush();
             @flush();
        }

    ```
EN

回答 2

Stack Overflow用户

发布于 2020-04-14 19:53:09

有几件事情发生在你想要echo出来的东西上。

  1. ,回音中的回音,可能是
  2. ,end </script>没有被回音的问题。

我会将代码修改为:

代码语言:javascript
运行
复制
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->path), RecursiveIteratorIterator::SELF_FIRST);        
foreach ($objects as $filename => $value) {
     // Enclose the echo in single quotes and use double quotes for the actual JS.
     echo '<script>element.innerHTML = "<div>' . $filename . '</div>";</script>';    
     // Remove the error suppression so you can actual see errors.
     ob_flush();
     flush();
}

我也不确定您的主插件如何与Do_output_buffer()函数一起工作--因为它是在init上调用的,所以它要缓冲,直到得到flushed...after --第一个foreach --那么缓冲区就可能变得无用。如果是这样的话,您可以在每次迭代中打开缓冲区:

代码语言:javascript
运行
复制
$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->path), RecursiveIteratorIterator::SELF_FIRST);        
foreach ($objects as $filename => $value) {
     // Start the buffer here.
     ob_start();
     // Enclose the echo in single quotes and use double quotes for the actual JS.
     echo '<script>element.innerHTML = "<div>' . $filename . '</div>";</script>';    
     // Remove the error suppression so you can actual see errors.
     // Flush the buffer.
     ob_flush();
     flush();
     // repeat
    }
票数 1
EN

Stack Overflow用户

发布于 2020-04-15 15:10:06

好的,所以,问题是一个站点上的其他插件或主题正在创建一个额外的输出缓冲区,并且在完成时并没有清除它。当我var_dumped ob_get_status(真)时,我看到了这个。

代码语言:javascript
运行
复制
  [0]=>
  array(7) {
    ["name"]=>
    string(22) "default output handler"
    ["type"]=>
    int(0)
    ["flags"]=>
    int(112)
    ["level"]=>
    int(0)
    ["chunk_size"]=>
    int(0)
    ["buffer_size"]=>
    int(16384)
    ["buffer_used"]=>
    int(0)
  }
  [1]=>
  array(7) {
    ["name"]=>
    string(22) "default output handler"
    ["type"]=>
    int(0)
    ["flags"]=>
    int(112)
    ["level"]=>
    int(1)
    ["chunk_size"]=>
    int(0)
    ["buffer_size"]=>
    int(32768)
    ["buffer_used"]=>
    int(28778)
  }
}

这意味着,我发送的每一次刷新或ob_flush显然都刷新了错误的缓冲区,没有输出任何内容。因此,我想出的解决方案是在开始发送输出之前检查一下,看看有多少缓冲区。如果有不止一个,我就会脸红,关闭所有的缓冲器,只有一个除外。令人惊讶的是,它开始起作用了。

下面是我很快想出的恶意代码:

代码语言:javascript
运行
复制
代码语言:javascript
运行
复制
    $buffers = ob_get_status(true);
代码语言:javascript
运行
复制
    //shows the array of how many buffers are active.
代码语言:javascript
运行
复制
    //echo '<pre>';
代码语言:javascript
运行
复制
    //echo 'Buffer Count: '. count($buffers).'<br>';
代码语言:javascript
运行
复制
    //var_dump(ob_get_status(true));
代码语言:javascript
运行
复制
    //echo '</pre>';
代码语言:javascript
运行
复制
    if (count($buffers) > 1) {
代码语言:javascript
运行
复制
        for ($i=0;$i<count($buffers)-1;$i++) {
代码语言:javascript
运行
复制
            ob_end_flush();
代码语言:javascript
运行
复制
        }
代码语言:javascript
运行
复制
    }
代码语言:javascript
运行
复制

谢谢你的回复和帮助我说出这句话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61214979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档