在脚本中使用ini_set被认为是不好的做法?

时间:2015-07-06 13:04:11

标签: php

我正在进行代码审查,并找到2个地方

ini_set('memory_limit', '512M');

用于函数中。这个可以吗?不知怎的,它对我来说似乎不对。这被认为是不好的做法吗?

谢谢!

7 个答案:

答案 0 :(得分:2)

它没有任何问题。考虑在PHP的ini文件中全局设置memory_limit的情况,并且您希望仅针对一个特定脚本/请求覆盖该设置,以允许操作使用更多内存。

在PHP脚本中调用ini_set只会在PHP执行该特定请求时产生效果。

答案 1 :(得分:1)

您也可以将此函数调用包装在另一个被调用的函数中,这样可以在将来更好的方法中更改实现,或者如果您想轻松地全局更新内存限制< / p>

public void setNewPath(final String path) {
  if (StringUtils.hasText(path) && !path.endsWith(File.separator)) {
            this.newPath = path + File.separator;
        } else {
            this.newPath = path;
        }
    }

答案 2 :(得分:1)

我的意见(我想你提出意见):

[START OPINION]

使用ini_set当然不是一个坏习惯(&#39; memory_limit&#39;,....);

但是我总是把这样的声明置于我的脚本之上(如果它是内存饥饿),而不是在函数中......

如果你习惯于改变函数中的内存需求,我希望如果在同一个脚本中调用许多函数,可能很难弄清楚当前的设置是什么。

所以,对于代码审查,如果它发生一次或两次,不是一个非常糟糕的做法,但如果你经常遇到它,我会举起一面红旗。

[结束意见]

答案 3 :(得分:1)

不错。 因为你可能无法访问php.ini 或者只在一个脚本中需要一些值。

答案 4 :(得分:0)

在任何思考开始时使用脚本往往是一种不好的做法,但是如果你设置内存等属性,那么如果你试图执行其他脚本的话,那就不那么糟了。

答案 5 :(得分:0)

如果你使用需要512M的脚本并且你没有权限在php.ini上更改此设置,则可以使用ini_set

答案 6 :(得分:0)

注意:多个用户可以运行相同的PHP脚本 如果您有 10个用户正在运行您的脚本,您的服务器可能会耗尽内存: 10 X 512M = 5120M = 5G ,所以要小心!

使用ini_set()函数不被认为是一个糟糕的实践,但你必须遵循一些规则,以保持干净:

将所有ini_set()集中在同一个配置文件中 的 custom_ini_set.php

function custom_ini_set($script_path_name_s) {
        switch ($script_path_name_s) {
            case '/dir1/sub_dir1/script1.php' : {
                ini_set('memory_limit', '512M');
                break;
            }

            case '/dir1/sub_dir2/script2.php' : {
                ini_set('memory_limit',         '256M');
                ini_set('max_execution_time',   128);
                break;
            }
            // ...
        }
    }

在脚本中调用此函数需要更多资源:

require_once   ('custom_ini_set.php');
custom_ini_set (__FILE__);

最好把它放在XML文件而不是PHP文件中:)