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

php - can't access global variables from Thread?

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

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

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

您可以阅读更多相关内容here