class Math
{
- public static function toBytes($val) {
+ /**
+ * @param $val
+ * @return float
+ */
+ public static function toBytes($val)
+ {
$val = trim($val);
- $last = strtolower($val[strlen($val)-1]);
- $val = substr($val, 0, -1);
- switch($last) {
+ $last = strtolower($val[strlen($val) - 1]);
+ $val = (float)substr($val, 0, -1);
+ switch ($last) {
// The 'G' modifier is available since PHP 5.1.0
case 'g':
$val *= 1024;
public static function isCloseToMemoryLimit($throw = false, $ratio = 0.9)
{
- $res = (memory_get_usage() / Math::toBytes(ini_get('memory_limit'))) > $ratio;
+ $limit = Math::toBytes(ini_get('memory_limit'));
+ $res = $limit > 0 && (memory_get_usage() / $limit) > $ratio;
if ($throw && $res) {
throw new \Exception('Memory is close to the limit');
}