我需要检查是否memory_limit至少64M在我的脚本安装程序中.这只是应该工作的PHP代码的一部分,但可能是因为这个"M"它没有正确读取值.如何解决这个问题?
//memory_limit
echo "<phpmem>";
if(key_exists('PHP Core', $phpinfo))
{
if(key_exists('memory_limit', $phpinfo['PHP Core']))
{
$t=explode(".", $phpinfo['PHP Core']['memory_limit']);
if($t[0]>=64)
$ok=1;
else
$ok=0;
echo "<val>{$phpinfo['PHP Core']['memory_limit']}</val><ok>$ok</ok>";
}
else
echo "<val></val><ok>0</ok>";
}
else
echo "<val></val><ok>0</ok>";
echo "</phpmem>\n";
Run Code Online (Sandbox Code Playgroud)
Muh*_*vin 31
尝试首先转换该值(例如:64M - > 64*1024*1024).之后,进行比较并打印结果.
<?php
$memory_limit = ini_get('memory_limit');
if (preg_match('/^(\d+)(.)$/', $memory_limit, $matches)) {
if ($matches[2] == 'M') {
$memory_limit = $matches[1] * 1024 * 1024; // nnnM -> nnn MB
} else if ($matches[2] == 'K') {
$memory_limit = $matches[1] * 1024; // nnnK -> nnn KB
}
}
$ok = ($memory_limit >= 640 * 1024 * 1024); // at least 64M?
echo '<phpmem>';
echo '<val>' . $memory_limit . '</val>';
echo '<ok>' . ($ok ? 1 : 0) . '</ok>';
echo '</phpmem>';
Run Code Online (Sandbox Code Playgroud)
Jar*_*Chu 13
检查ini的命令行:
$ php -r "echo ini_get('memory_limit');"
Run Code Online (Sandbox Code Playgroud)
小智 12
这是另一种更简单的检查方法.
$memory_limit = return_bytes(ini_get('memory_limit'));
if ($memory_limit < (64 * 1024 * 1024)) {
// Memory insufficient
}
/**
* Converts shorthand memory notation value to bytes
* From http://php.net/manual/en/function.ini-get.php
*
* @param $val Memory size shorthand notation string
*/
function return_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
switch($last) {
// The 'G' modifier is available since PHP 5.1.0
case 'g':
$val *= 1024;
case 'm':
$val *= 1024;
case 'k':
$val *= 1024;
}
return $val;
}
Run Code Online (Sandbox Code Playgroud)
小智 10
在命令行中检查:
php -i | grep "memory_limit"
Run Code Online (Sandbox Code Playgroud)
小智 5
很老的帖子。但我将只留在这里:
/* converts a number with byte unit (B / K / M / G) into an integer */
function unitToInt($s)
{
return (int)preg_replace_callback('/(\-?\d+)(.?)/', function ($m) {
return $m[1] * pow(1024, strpos('BKMG', $m[2]));
}, strtoupper($s));
}
$mem_limit = unitToInt(ini_get('memory_limit'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78532 次 |
| 最近记录: |