Вместо 'file_get_contents' попробуйте использовать
$fp = fopen( $file_full_path, 'r' );
$content = fread( $fp, filesize( $file_full_path ) );
fclose( $fp );
if( stristr( $content, $q ) )
{
$ret .= $file_full_path . "\n"
}
unset( $content );
Я не вижу причин, по которым вам не хватает памяти, это должно быть утечка или что-то в этом роде. Если это не помогло, используйте функцию memory_get_peak_usage, чтобы отследить, какая часть вызывает увеличение памяти.
Возможно, это конкатенация переменной $ ret, но для этого вам нужно выполнить загрузку корзины. Вместо этого вы можете попробовать использовать массив, а затем вставить его в строку в конце поиска.
Не зная специфики файлов, которые вы ищете, я не могу дать никаких других рекомендаций.