PHP如何处理RAM中的变量?

PHP如何处理RAM中的变量?,php,ram,Php,Ram,我很好奇PHP如何处理内存中的变量?如果我设置了100个常量或变量,这些常量或变量包含与我的应用程序相关的值,而不是基于每个用户,例如站点名称、版本号等,所有用户都具有相同的值 如果100个用户同时访问页面,PHP会将这100个变量放入ram 100次吗?或者它只在RAM中存储一次值,而所有用户都从中获取信息?您可以尝试使用它来监视内存是如何响应某些声明的。例如,我做了以下工作: echo memory_get_usage(); // 84944 $var = "foo"; echo memor

我很好奇PHP如何处理内存中的变量?如果我设置了100个常量或变量,这些常量或变量包含与我的应用程序相关的值,而不是基于每个用户,例如站点名称、版本号等,所有用户都具有相同的值

如果100个用户同时访问页面,PHP会将这100个变量放入ram 100次吗?或者它只在RAM中存储一次值,而所有用户都从中获取信息?

您可以尝试使用它来监视内存是如何响应某些声明的。例如,我做了以下工作:

echo memory_get_usage(); // 84944
$var = "foo";
echo memory_get_usage(); // 85072
unset($var);
echo memory_get_usage(); // 85096
与存储在
$\u会话中相比

echo memory_get_usage(); // 85416
$_SESSION['var'] = "foo";
echo memory_get_usage(); // 85568
unset($_SESSION['var']);
echo memory_get_usage(); // 85584

如果变量只是$variable,那么是的,100个变量将乘以100个用户。即使在计算会话存储时,在请求运行期间,这些变量也存储在内存中,$\u session中

然而,我怀疑你是否真的需要关注,几个变量占用的空间很少是一个问题;许多大型PHP应用程序将为每个请求加载数千个变量,然后在请求结束时清除它们。PHP的占用空间并不是很大,内存控制更多地取决于PHP的部署方法(mod_PHP vs CGI/FastCGI),而不是运行任何应用程序


更具体地说,您的机器能否处理100个同时请求与您的PHP脚本无关,因为PHP解释器通常比它运行的脚本占用更多的内存。但是,如果这些脚本中的每一个都在将一个非常大的文件加载到字符串(或大型数据库结果集等)中,那么脚本的内存使用可能是一个问题。但是,对于一般情况,这取决于Web服务器的设置。

只有代码页在进程之间隐式共享。数据对于进程是单独的,对于线程是组合的,除非通过SysV共享内存等显式重写