Daily Archives: 23.09.2011
Борьба с утечками памяти в php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$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.