我正在使用带有 hmvc 库的 codeigniter 框架开发一个 php 应用程序,该应用程序将有模块,我希望每个模块有不同的内存限制。这可能吗?
问问题
149 次
1 回答
2
您可以.htaccess
使用内存限制配置将一个添加到每个模块的根目录:
<IfModule mod_php5.c>
php_value memory_limit 32M
</IfModule>
要动态更新文件,您需要考虑.htaccess
公开这是一件危险的事情。
我会竭尽全力确保没有办法允许将用户输入(即使是你的,因为如果你能做到,其他人也能做到)写入.htaccess
文件。
也就是说,伪代码示例(买主警告):
private function _set_mem_limit($limit = 0, $module = '')
{
//modules
$available_modules = array(
'module1' => '/var/www/myApp/modules/module1/',
'module2' => '/var/www/myApp/modules/module2/',
);
//limits
$available_limits = array(
'32' => '32M',
'64' => '64M',
'128' => '128M',
'256' => '256M',
'512' => '512M'
);
$string = 'php_value memory_limit ';
// make sure limit is an integer and it is in the available_limits array
// if so, set string with the selected limit from array. otherwise, exit
if(gettype($limit) === 'integer' and in_array($limit, $available_limits))
{
$string .= $available_limits[$limit];
}
else
{
die('Problem setting mem limit.');
}
// make sure incoming module variable is only alphanumeric and exists in
// available_modules array. if so, write the limit to the file. otherwise, exit
if(ctype_alpha($module) and in_array($module, $available_modules))
{
$path = $available_modules[$module].'.htaccess';
$f = fopen($path, 'w');
fwrite($f, $string);
fclose($f);
}
else
{
die('Problem setting path for mem limit.');
}
}
尽管这可能有效,但我不会相信它。
于 2013-11-13T15:23:57.800 回答