Борьба с утечками памяти в php

	$limit = 512;
	$thresholdDelta = 10;
	ini_set('memory_limit', $limit . 'm');
	...
	$memoryThresholdReached = false;
	$memoryThreshold = ( $limit - $thresholdDelta ) * 1024 * 1024;
	...
	while ( $user = $db->plain_fetch( $result ) )
	{
		...
	// тут работа с данными
		...
	// проверка на превышение опасного порога использования памяти
		if ( ! $memoryThresholdReached && memory_get_usage( true ) > $memoryThreshold )
		{
			$memoryThresholdReached = true;
			try {
				throw new SystemException( 'Превышен порог использования памяти...' );
			}
			catch ( Exception $e ) {}
		}
	}

Более серьёзные способы — просмотр стека (strace -f -p $pid) и дебаг php C-шным дебаггером DBG.

LEAVE A COMMENT