我想这是一个特定的问题,但出于某种原因,当我创建一个像这样的线程时:
require_once(__DIR__.'/myotherfile.php');
class StreamBufferInput extends Thread {
public function run(){
global $max_buffer_size;
global $data_source;
echo "DATA:" . $max_buffer_size;
...
}
}
myotherfile.php
已经在其中声明了这两个变量(并且可以从其他类访问它们,但我的echo
语句在此打印DATA:
而没有其他任何内容。我找不到多少关于在类中执行全局变量,但是我在其他类的函数中有这样的全局声明,并且它工作正常。
编辑:这是我如何启动线程。
$stream = new StreamBufferInput();
$stream->start();
答案 0 :(得分:3)
目前在PHP中这是不可能的。您无法从线程本身访问线程外部定义的全局范围变量。但是,你可以使用Thread::globally
在全局范围内从线程中执行callable,我相信这可以帮助你实现你想要的。
您可以阅读有关此here
的更多信息