我没有任何数据可以对此进行基准测试,所以事先我想知道。对于加载同一页面的多个用户,你会说PHP会有更好的表现吗?
一个页面上的1.100个会话,每个页面包含一个数组,每个数组都在代码末尾未设置。多维数组:一个包含100个键的数组,每个数组包含一个数组。
答案 0 :(得分:3)
通过阅读你的问题,我感觉你不明白会话是什么以及它们是如何工作的。
为了以防万一,我将明确说明你可能会或可能不知道的会议的一些事情。
会话通常用于包含临时的,持久的,特定于用户的数据。 $_SESSION
是一个数组,因此您可以使用多维数组或对象存储任意数量的键值对。
会话背后的想法是将所有相关数据存储在单个会话中。如果有两组数据具有独立的状态持续时间,那么您应该使用两个会话。
在幕后,会话正在执行文件IO,因此使用会话会有必要的开销。
因为$_SESSION
与任何其他数组没有什么不同,所以在使用单个多维数组和使用100个数组之间的代码不会有显着差异。 将在用于打开/关闭会话的读写时间量方面存在显着差异。如果没有理由将数据放在单独的会话中,请使用一个会话并根据需要对数据进行别名:
$foo = $_SESSION['foo'];
//do stuff with $foo
$_SESSION['foo'] = $foo;
您在全局范围内创建的任何数组都会自动成为多维数组,因为$GLOBALS
数组(不是您应该从那里访问它们)。
除非您有多个需要彼此分开的数据集,否则不要使用多个会话。
没有过早的优化。测试而不是猜测。
答案 1 :(得分:0)
考虑为每个用户加载100个单独的数据文件将导致必须定位和加载这些文件的开销,加上PHP中的解析开销。如果你可以加载一个更大的文件,它几乎总是比加载多个小文件更有效。
但是,当然,你必须要进行基准测试。在一个系统上可能很慢的可能是你的超快速,你在这里得到的任何答案都说“你必须这样做这一个真正的方式(tm)”将是错误的。
答案 2 :(得分:0)
这两者基本相同。 100个独立数组可能有略微更多的内存使用,而不是100个数组作为元素的数组 - 但这也取决于它是一个关联数组还是枚举数组。
但实际上,出于存储目的,内存使用是相同的。
对于特定脚本,一个是否优于另一个将取决于脚本。如果您通过foreach
放置一个大型多维数组,它会复制并消耗比foreach
每个成员独立或有条件的内存更多的内存。