【问题标题】:PHP: Does ini_set("memory_limit","1024M"); implicitly relase memory resources on PHP script execution end?PHP:是否 ini_set("memory_limit","1024M"); PHP脚本执行端隐式释放内存资源?
【发布时间】:2015-12-23 12:31:10
【问题描述】:

将大文件上传到 EC2 服务器, 我的配置是:

ini_set("display_errors",1);
ini_set("memory_limit","1024M");
ini_set('upload_max_filesize', '500M');
ini_set('post_max_size', '5000M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 0);

一切正常

但是脚本会自动释放与之关联的所有资源

程序员应明确释放资源

程序员应该设置什么默认(最佳)值

【问题讨论】:

  • 完成后会释放所有资源
  • 好的,如果 EC2 的 RAM 为 5GB 并且我在文件上传时分配 1GB 怎么办。如果我在 ini_set() 中设置 128MB 内存哪个更好 1GB 或 128MB 你会说什么?这样服务器就有足够的内存,我的文件可以上传而不会崩溃。在上面的代码中,我应该使用和不应该使用哪些 ini_set 配置?
  • php 有最大内存限制分配。如果您在内存限制中设置 -1,它将使用为 PHP 设置的最大限制。它不会超过。这需要在 PHP 之外的服务器端处理
  • 但是如果你为 PHP 设置了超过允许的内存,那么服务器将用 php.ini 中的默认内存替换它,我认为它是 128M

标签: php apache amazon-ec2


【解决方案1】:

一旦完成,它将释放所有资源。 php 有最大内存限制分配。如果您在内存限制中设置 -1,它将使用为 PHP 设置的最大限制。它不会超过。这需要在 PHP 之外的服务器端处理 但是,如果您为 PHP 设置了超过允许的内存,那么服务器将用 php.ini 中的默认内存替换它,我认为它是 128M。为 PHP ini_set('memory_limit', '-1') 使用 MAX 可用内存。这将允许您使用最大可用内存来执行 PHP。

【讨论】:

    【解决方案2】:

    ini_set

    设置给定配置选项的值。配置选项将在脚本执行期间保留此新值,并将在脚本结束时恢复。

    还需要说什么吗?是的一件事!垃圾收集与您拥有的 ini_set 调用无关。两者是两个不同的东西。

    【讨论】:

    • 好的,如果 EC2 的 RAM 为 5GB 并且我在文件上传时分配 1GB 怎么办。如果我在ini_set() 中设置 128MB 内存,你会说 1GB 还是 128MB 更好?这样服务器就有足够的内存,我的文件可以上传而不会崩溃。在上面的代码中,我应该使用哪些ini_set 配置,不应该使用哪些配置?
    • 一个 1GB 的文件上传不需要 1 GB 的内存用于您的脚本。而且,如果您为脚本提供上限,并不意味着它将使用所有脚本。你为什么要让别人首先上传一个 1GB 的文件?
    • 我要上传多个文件,即图像、游戏 APK、视频等,并且 EC2 上的空间已用完,因此计划将数据移动到 S3。
    • 但这与ram无关
    【解决方案3】:

    脚本执行停止时资源会自动释放。

    程序员应该设置什么默认(最佳)值

    没有这样的事情。这取决于实际的内存使用情况...

    【讨论】:

    • 如果 EC2 的 RAM 为 5GB 并且我在文件上传时分配 1GB 怎么办。如果我在 ini_set() 中设置 128MB 内存哪个更好 1GB 或 128MB 你会说什么?这样服务器就有足够的内存,我的文件可以上传而不会崩溃。在上面的代码中,我应该使用和不应该使用哪些 ini_set 配置?
    • @LukyBoy-KU 您正在为脚本分配 1GB。我不知道那里发生了什么......如果你在内存中创建一个价值 2GB 的数据数组,你需要更多(好吧,愚蠢的例子)。无论如何,这取决于您在脚本中执行的操作。
    • 我为文件而不是脚本分配 1G,因为我要上传一些大于 512MB 的时间文件。如果我做错了什么,请告诉我。
    • ini_set("memory_limit","1024M"); -> 您正在分配的 php 脚本可能包括也可能不包括上传,可能包括也可能不包括处理
    猜你喜欢
    • 2012-05-31
    • 2010-12-17
    • 2012-11-09
    • 2023-03-09
    • 2017-09-08
    • 2016-05-31
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多