我知道这已经在这里多次讨论了,但我想进一步清楚地理解为什么使用全局变量是不好的做法。并发http请求会变得危险吗?如果这是代码:
<?php
$variable1 = $_REQUEST['userinput'];
sleep(3000);
echo $variable1;
?>
如果有像user1,user2这样的用户..如果user1的输入是'request1'而user2的输入是传递给$ _REQUEST ['userinput']变量的'request2',那么发生请求的并发发送,将会回显$ variable1会显示为各个用户输入到浏览器的内容,还是会覆盖最后一个用户输入的第一个用户输入?为我写得不好的帖子和这个反复询问道歉。我只想清楚地了解全局变量。
答案 0 :(得分:2)
全局变量可以被当前堆栈中运行的任何php访问和更改。有时它是由你没有编写的其他脚本,它们是框架的一部分或加载的代码库。
在许多文件中修改值时,很难调试代码。
在一个简单的并发请求示例中并不明显,这些请求都在不同的内存堆栈中运行,它在整个系统中可能会变得不可预测。
答案 1 :(得分:1)
我回答这个问题:
回显的$ variable1会显示为各个用户输入到浏览器的内容,还是会覆盖最后一个用户输入的第一个用户输入?
回显的$ variable1将显示为各个用户输入其浏览器的内容。
PHP为每个请求创建线程,因此不同的请求具有不同的变量(包括全局)。
我检查this post。
正如JasonB所说, PHP全局变量具有非常广泛的范围,并使代码复杂。