【问题标题】:phpunit memory_limit parameter does not applyphpunit memory_limit 参数不适用
【发布时间】:2012-02-07 06:24:47
【问题描述】:

我刚刚在 mac osx 10.7 中通过 pear 安装了 phpunit,一切正常,除了出现内存限制错误(为报告启用了 xdebug)。

我尝试将 -d memory_limit=512M 参数添加到 phpunit,但它没有应用,因为在第一个错误中,我添加了 var_dump(ini_get('memory_limit')); exit; 并打印 string(3) "32M"

那么,为什么它没有被应用?

除此之外,如果我运行

php -d memory_limit=256M -r "echo ini_get('memory_limit');"

它与“256M”相呼应

有没有可能是 phpunit 没有执行相同的 php?

【问题讨论】:

  • 你试过ini_set('memory_limit', '512M')吗?
  • @afuzzyllama 它可以工作,但我不明白为什么它不能使用命令行
  • 这听起来很愚蠢,但如果你尝试phpunit -dmemory_limit=512M会发生什么?
  • PHPUnit 是否接受-d
  • 在另一台机器上对我有用

标签: php macos phpunit xdebug memory-limit


【解决方案1】:

是的,您可以使用phpunit -d 设置每个可以使用ini_set 设置的php 选项。

You already opened a bug over in the phpunit bug tracker 但我会在这里寻求更详细的答案

复制以显示它在一般情况下有效:

echo "<?php var_dump(ini_get('memory_limit')); " > foo.php

phpunit -d memory_limit=12M --bootstrap foo.php 

生产:

string(3) "12M"
PHPUnit 3.6.5 by Sebastian Bergmann.

但是 phpunit 只在第一次测试运行前应用这个选项一次!

因此,您的代码很可能在某处将内存限制更改回 32M,这是 phpunit 无法“修复”的。

phpunit.xml 文件中设置内存限制也是如此。

【讨论】:

  • 该示例按说明工作。但是,我在代码中找不到任何“memory_limit”。我会继续调试。谢谢。
  • 感谢您提到我的代码当然可以设置限制
  • 那,就在那里,拯救了我的一天......“所以你的代码很可能在某个地方将内存限制更改回 32M,这是 phpunit 无法“修复”的。
【解决方案2】:

到达本帖需要获取phpunit.xml配置文件的配置:

<php>
  <ini name="memory_limit" value="512M" />
</php>

有关“设置 PHP INI 设置、常量和全局变量”部分的更多信息,请参阅 https://phpunit.de/manual/6.5/en/appendixes.configuration.html

【讨论】:

    【解决方案3】:

    如果您不介意测试的速度,发现this thread 非常有用,因为它可以更好地处理您的应用程序的内存。

    基本上;在您的phpunit.xml 中,在&lt;phpunit&gt; 标签下,将processIsolation 设置为true,即

    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit 
             ...
             processIsolation="true"
             ... >
    

    或者,

    您可以在&lt;php&gt; 标签下完全禁用内存限制,将memory_limit 设置为-1

    <php>
            ...
            <ini name="memory_limit" value="-1"/>
            ...
    
    

    【讨论】:

      猜你喜欢
      • 2013-01-04
      • 2015-06-12
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      相关资源
      最近更新 更多