ExpressionEngine® User Guide

Legacy Documentation

You are using the documentation for version 4.3.8. Go here for the latest version.

Memory Service

The Memory service provides some handy methods revolving around PHP’s memory usage.

Usage

Get Memory Limit

PHP’s ini setting for memory_limit could be in a variety of formats. This method standardizes the value and provides it to you in bytes:

$current_limit = ee('Memory')->getMemoryLimitBytes();
// e.g. 536870912

Set Memory For Image Manipulations

When processing an uploaded image, the compressed filesize for the most part doesn’t matter, as the PHP image libraries will create an uncompressed representation of the image for processing. So the physical dimensions and color space are a large determining factor for how much memory PHP will need to crop, resize, etc.

This method attempts to guess how much memory will be needed by examining some of the image’s properties, and then set the memory limit for the current request to a high enough value to allow PHP to do its work:

try
{
  ee('Memory')->setMemoryForImageManipulation($file_path);
}
catch (\Exception $e)
{
  show_error($e->getMessage());
}

If the environment doesn’t allow the memory limit to be increased, this method will throw an Exception that you can handle however you need in your code, avoiding a fatal memory error in PHP.

Memory Methods

class EllisLab\ExpressionEngine\Service\Memory\Memory
EllisLab\ExpressionEngine\Service\Memory\Memory::getMemoryLimitBytes()

Gets the current memory limit, in bytes.

Returns:Current memory limit, in bytes. (int -1 means no limit)
Return type:int
EllisLab\ExpressionEngine\Service\Memory\Memory::setMemoryForImageManipulation($file_path, $tweak_multiplier = 1.8)

Sets memory needed for image manipulations of a given file.

Parameters:
  • $file_path (string) – The server path to the file
  • $tweak_multiplier (float) – Multiplier used for estimated memory usage
Returns:

void, throws an Exception on failure