Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么要在一个站点上工作,而不是在另一个站点上工作?

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

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

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

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

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

谢谢!

编辑每个请求

代码语言:javascript
运行
AI代码解释
复制
        $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 11:53:09

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

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

我会将代码修改为:

代码语言:javascript
运行
AI代码解释
复制
$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
运行
AI代码解释
复制
$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 07:10:06

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

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

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

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

https://stackoverflow.com/questions/61214979

复制
相关文章
C++类的成员函数 | 成员函数
在C++中,类的成员函数是函数的一种,它有返回值和函数类型,它与一般函数的区别只是:
小林C语言
2021/01/18
2K0
C++类的成员函数 | 成员函数
dotnet C# 如果在构造函数抛出异常 析构函数是否会执行
请问以上代码的 ~Foo 是否可以在垃圾回收执行,或者说在构造函数里面抛出异常,是否这个对象可以被垃圾回收
林德熙
2021/12/24
5040
C++类声明和成员函数定义 | 引用多个成员对象
在C++中,一般做法是将类的声明放在指定的头文件中,程序员如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,以减少工 作量,提高编程的效率。
小林C语言
2021/01/25
2K0
C++类声明和成员函数定义 | 引用多个成员对象
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
类的成员方法 , 就是 在 类 中定义的 函数 , 在该 函数 中 , 可以调用 类的成员变量 , 以及 本类中其它的成员方法 ;
韩曙亮
2023/10/11
5060
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
Python 检测成员函数、成员变量是否存在的方法
AttributeError: A instance has no attribute 'fun2'
用户9127725
2022/08/08
2.9K0
Java继承类中static成员函数的重写
在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常的非static函数那样运行。 也就是说,虽然你可以定义一个重写函数,但是该函数没有多态特性。让我们测试一下: 1 class testClass1{ 2 static void SMothod(){ 3 System.out.println("static in testClass1"); 4 } 5 } 6 class testCla
老白
2018/03/19
1.7K0
C++设计模式之SFINAE:用来检测类中是否有某个成员函数
针对类中特定成员函数的检测其实在工作中也可能用到。C++中可以用SFINAE技巧达到这个目的。
果冻虾仁
2021/12/20
4.7K0
C++设计模式之SFINAE:用来检测类中是否有某个成员函数
java反射详解与反射是否会破坏类的封装性见解
       首先,封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。(摘自百度问答)
洋仔聊编程
2019/01/15
2.3K0
taro中定义以及使用全局变量
错误的姿势 // app.tsx文件中 class App extends Component { componentDidMount() { this.user = { name: '张三', id: 1 }; } } // index.tsx 文件中 const app = Taro.getApp(); export default class Index extends Component { componentWillMount() { console.log(ap
用户1437675
2019/06/11
5.7K0
const修饰类中成员变量及函数
const在类中,可以修饰成员变量和成员函数,主要目的也是保护成员内部的一些属性不被轻易的修改。以保证数据的完整性。下面分别介绍const修饰成员变量和成员函数。
我与梦想有个约会
2023/10/20
3100
C++类成员的访问权限以及类的封装
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。
芯动大师
2023/10/14
4230
C++类成员的访问权限以及类的封装
C++中的空类默认包含哪些类成员函数
空类 class Empty { } 空类包含的函数(6个) class Empty { public: Empty(); // 缺省构造函数// Empty( const Empty& ); // 拷贝构造函数// ~Empty(); // 析构函数// Empty& operator=( const Empty& ); // 赋值运算符// Empty* operator&(); // 取址运算符 const Empty* operator&() const; // 取址运算符 const };
全栈程序员站长
2021/04/07
1.7K0
类A的成员函数做类B的友元函数
这种方法相对麻烦,主要是在两个类之间的前后声明有着复杂的逻辑关系。但只要我们理清思路,是可以实现的。跟着我从最初的想法到实现一步一步的理顺逻辑,就非常容易理解如何操作了。
我与梦想有个约会
2023/10/20
1930
类A的成员函数做类B的友元函数
java反射详解【转】与 反射是否会破坏类的封装性见解
       首先,封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。(摘自百度问答)
洋仔聊编程
2022/05/10
7120
java反射详解【转】与 反射是否会破坏类的封装性见解
Python中类的成员
细分类的组成成员 之前咱们讲过类大致分两块区域 class A: name = '陈松' # 第一部分:静态字段(静态变量)部分(这一部分调用了类自己本身,表示了类自己的自身属性) def __init__(self): pass def func(self): pass # 第二部分:方法部分(这一部分表示了类可以实施的方法,可以 自己或其他进行操作) 每个区域详细划分 class A:#在方法名前面带__的属于私有 compan
星陨1357
2023/03/14
1K0
Python中类的成员
C++中类和对象以及成员函数
一个实体拥有自己的属性和行为,属性是私有的,行为是共有的,在C++中实体对应的就是对象,实体抽象数据类型就是类,属性是成员变量,行为是成员函数。
用户7886150
2021/02/04
1.4K0
C++中类成员函数作为多线程的入口
搜了一圈答案,基本上都是启动线程的时候传入this指针,在线程函数内部再强转的解决方案。可能显得有些别扭。
ApacheCN_飞龙
2019/02/15
2.9K0
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
可以使用 对象名.‘成员名’ 访问 Groovy 类的成员 , 这样写的好处是 , 不用将代码写死 , 在运行时可以自由灵活的决定要访问哪个成员 ;
韩曙亮
2023/03/30
2.5K0
【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )
【Kotlin】Kotlin 面向对象 ( 类 | 成员变量 | 成员方法 | 封装 | 继承 | 多态 )
② 定义字段 : 在类后的括号内 , 使用 var 字段名称:字段类型 可以定义一个字段 ;
韩曙亮
2023/03/27
6610
C++类的静态数据成员和静态成员函数
一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相同的属性,那么意味着我们需要对它们统一操作,这就有可能出现它们的值会不一样的情况,如果用全局变量来描述它们相同的属性,就会破坏类的独立性。
叶茂林
2023/07/30
2980

相似问题

如何在json数据中动态添加属性和值

12

如何在字典值中添加前缀和后缀

17

Map<String,String[]>;属性(如键和值对)的JSON

14

在json属性名中添加下划线前缀

11

前缀JSON值- JSON/JQuery

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档