为了账号安全,请及时绑定邮箱和手机立即绑定

如何确定并发用户的内存使用量和限制

如何确定并发用户的内存使用量和限制

PHP
Helenr 2023-11-03 20:09:25
我需要消除对 php memory_limit 的好奇心memory.php我在我的文件中包含了一个文件index.php下面是我使用的脚本 memory.php,用于获取页面的内存使用情况。<?php function formatBytes($bytes, $precision = 2) { $units = array("b", "kb", "mb", "gb", "tb"); $bytes = max($bytes, 0); $pow = floor(($bytes ? log($bytes) : 0) / log(1024));  $pow = min($pow, count($units) - 1);  $bytes /= (1 << (10 * $pow)); return round($bytes, $precision) . " " . $units[$pow]; } print formatBytes(memory_get_peak_usage());?>我的index.php 使用500KB内存。在我的.htaccess文件中我添加了这一行php_value memory_limit 2M我好奇的是我读到了用户concurrent在页面上的操作。我的问题是:例如,如果 5 个用户同时打开我的 index.php,那么内存使用量合计是 5x500KB=2.5MB 还是每个用户 500KB 内存,即使 10 个用户同时打开我的 index.php 也没关系如果合并所有用户的内存使用情况,我仍然需要将内存更改.htaccess为更大的内存限制。
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

每个传入的请求都由您的 Web 服务器(例如 Apache)处理。现在,根据网络服务器的配置方式,它会为每个请求创建一个新进程

php_value内存限制2M

读取和处理 PHP 脚本的单个进程最多允许消耗 2mb。

PHP memory_limit 是针对每个脚本的,就像高速公路的速度限制是针对每辆车一样。例如,尽管 PHP 的内存限制可能设置为高至 1GB,但这并不意味着脚本会堆积起来以使用该 1GB。

因此,举个例子,如果 10 个用户同时访问/index.php,您的 Web 服务器将总共使用 10x 500kb (5mb) 内存,但这样也没有问题,因为每个用户之前都允许达到 2mb并抛出错误。

  1. 例如,如果 5 个用户同时打开我的 index.php,那么内存使用量合计是 5x500KB=2.5MB 还是每个用户 500KB 内存,即使 10 个用户同时打开我的 index.php 也没关系

这个问题的措辞有点奇怪,但不,PHP 的内存限制是每个进程/请求,所以你会没事的。每个人最多可以消耗 2mb 的内存。

  1. 如果合并所有用户的内存使用情况,我仍然需要将 .htaccess 更改为更大的内存限制。

它没有合并。

最后,PHP 的默认内存限制(128mb)适合大多数应用程序。我的建议是保留它,除非您有充分的理由更改它。


查看完整回答
反对 回复 2023-11-03
?
喵喔喔

TA贡献1735条经验 获得超5个赞

PHP手册的描述是memory_limit这样的:

这设置允许脚本分配的最大内存量(以字节为单位)。

当这里说“脚本”时,它并不是指磁盘上的特定 URL 或文件,而是指该脚本的特定执行- 最常见的是对 Web 服务器的特定请求。

因此,如果您有多个用户请求同一页面,他们每个人都会获得 2 MB 的“限额”(这对于现代服务器来说是一个非常低的限制!)。

请注意,这并不意味着为每个请求预先分配 2 MB。这意味着,如果 PHP 决定需要更多,它将立即停止处理页面,给用户留下一个纯白色的页面,并在日志中显示错误。


查看完整回答
反对 回复 2023-11-03
  • 2 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信