我正在进行代码审查,并找到2个地方
ini_set('memory_limit', '512M');
用于函数中。这个可以吗?不知怎的,它对我来说似乎不对。这被认为是不好的做法吗?
谢谢!
答案 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文件中:)