Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php-can';从线程访问全局变量?_Php_Multithreading_Scope_Global - Fatal编程技术网

php-can';从线程访问全局变量?

php-can';从线程访问全局变量?,php,multithreading,scope,global,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_b

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

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
语句打印
数据:
,其他什么都没有。我找不到在类中执行全局变量的方法,但是我在其他类的函数中有这样的全局声明,它工作得很好

编辑:这里是我如何开始线程

$stream = new StreamBufferInput();
$stream->start();

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


你可以阅读更多关于这方面的内容

也许是跑步()方法是在实际为变量设置值之前调用的?您在哪里读到可以从线程访问全局变量的消息?@Osuwariboy感谢您的响应,我刚刚检查了,但事实并非如此-在线程启动之前,有一个包含全局变量的文件。您看到这个@Osuwariboy了吗?我想事情是这样的一年来,情况发生了变化/