jer*_*kan 16 php macos phpunit xdebug memory-limit
我刚刚在mac osx 10.7中通过pear安装了phpunit,除了内存限制错误(xdebug启用了报告)之外,一切正常.
我试图将-d memory_limit=512M参数添加到phpunit,但它不适用,因为,在第一个错误,我添加var_dump(ini_get('memory_limit')); exit;并打印字符串(3)"32M"
那么,为什么它没有被应用呢?
除此之外,如果我跑
php -d memory_limit=256M -r "echo ini_get('memory_limit');"
Run Code Online (Sandbox Code Playgroud)
它呼应"256M"
是不是phpunit可能没有执行相同的PHP?
edo*_*ian 27
是的,你可以用每一个PHP选项设置phpunit -d可以与设置ini_set.
你已经在phpunit bug跟踪器中打开了一个bug,但是我想在这里找到更详细的答案
重现以显示它的工作原理:
echo "<?php var_dump(ini_get('memory_limit')); " > foo.php
phpunit -d memory_limit=12M --bootstrap foo.php
Run Code Online (Sandbox Code Playgroud)
生产:
string(3) "12M"
PHPUnit 3.6.5 by Sebastian Bergmann.
Run Code Online (Sandbox Code Playgroud)
但phpunit仅在第一次测试运行之前应用此选项一次!
所以很有可能你的代码在某处改变了内存限制,32M这是phpunit无法"修复"的东西.
设置phpunit.xml文件中的内存限制也是如此.
对于那些到达此线程并需要获取phpunit.xml配置文件配置的用户:
<php>
<ini name="memory_limit" value="512M" />
</php>
Run Code Online (Sandbox Code Playgroud)
https://phpunit.de/manual/6.5/en/appendixes.configuration.html上有关“设置PHP INI设置,常量和全局变量”部分的更多信息
如果你不介意测试的速度,发现这个线程非常有用,因为它可以更好地处理你的应用程序的内存。
基本上; 在您phpunit.xml的 <phpunit>标签下,将 设置processIsolation为trueie
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
...
processIsolation="true"
... >
Run Code Online (Sandbox Code Playgroud)
或者,
您可以在<php>标签下完全禁用内存限制 ,将其设置memory_limit为-1ie
<php>
...
<ini name="memory_limit" value="-1"/>
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13733 次 |
| 最近记录: |