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
我想这是一个具体的问题,但出于某种原因,当我创建这样一个线程时:
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