php - 无法从Thread访问全局变量?

时间:2015-07-20 20:13:53

标签: php multithreading scope global

我想这是一个特定的问题,但出于某种原因,当我创建一个像这样的线程时:

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();

1 个答案:

答案 0 :(得分:3)

目前在PHP中这是不可能的。您无法从线程本身访问线程外部定义的全局范围变量。但是,你可以使用Thread::globally在全局范围内从线程中执行callable,我相信这可以帮助你实现你想要的。

您可以阅读有关此here

的更多信息