Почему RegExp кладет Apache2?

Для удаления многострочных комментариев вида /*...*/ я написал вот такую регулярку:
/\/\*(.|.*\n){0,}/
Тестировал ее на маленьком примере, все работает. Но как только на вход подается большой файл размером более 300 кб, сервер падает. Не могу решить, в чем проблема. Регулярка на нахождение и удаление однострочных комментариев работает исправно. Вот эти самые регулярки для однострочных комментариев:
/\/{2}[a-zA-Z].*/
/\/{2}\s.*/
Ложится как и Денвер, так и Апач на Убунту. В чем моя ошибка?

Вот полный код скрипта:
<?php
function slib_compress_script( $buffer ) {
$buffer = preg_replace("/\/{2}\s.*/", "", $buffer);//однострочные
$buffer = preg_replace("/\/{2}[a-zA-Z].*/", "", $buffer);//однострочные
//$buffer = preg_replace("/\/\*(.|.*\n){0,}/", "", $buffer);//Та самая регулярка на многострочные комментарии
return trim( $buffer );
}
$jsLibsPatch = "libs/";
$jsLibsData = '';
$pattern = '/\/\*[\s\S]*?\*\//';

$folder = scandir($jsLibsPatch); 
foreach($folder as $file) 
{
if(($file !=".") && ($file !="..")){
  $jsFileName = $jsLibsPatch.$file;
  $fileHandle = fopen($jsFileName, 'r');
  $jsLibsDataNew = fread($fileHandle, filesize($jsFileName));
  $jsLibsDataNew = slib_compress_script($jsLibsDataNew);
  $jsLibsData .= "\n" . $jsLibsDataNew;
  fclose($fileHandle);
}}
  
$jsPatch = "file/";
$jsData = '';
$folder = scandir($jsPatch);   
foreach($folder as $file) 
{
if(($file !=".") && ($file !="..")){
  $jsFileName = $jsPatch.$file;
  $fileHandle = fopen($jsFileName, 'r');
  $jsDataNew = fread($fileHandle, filesize($jsFileName));
  $jsDataNew = slib_compress_script($jsDataNew);
  $jsData .= "\n" . $jsDataNew;
  fclose($fileHandle);
}}

header("Content-Type: text/javascript");
if (isset($jsData)) {
//$jsLibsData = preg_replace('/\s+/', ' ', $jsLibsData);
//$jsData = preg_replace('/\s+/', ' ', $jsData);
$newJS = $jsLibsData."\n".$jsData;
echo $newJS;
} else {
echo "// Files not avalable or no files specified.";
}

 ?>
  • Вопрос задан
  • 2638 просмотров
Пригласить эксперта
Ответы на вопрос 2
AxisPod
@AxisPod
Подобные вещи проще делать без регулярок. А регулярка видимо выжирает много памяти.
Ответ написан
Комментировать
@Vampiro
Объединить несколько файлов в один и удалить комментарии для уменьшения размера конечного файла.

Давайте я погуглю за вас.
stackoverflow.com/questions/503871/best-way-to-aut...
Хотя по факту это бесполезная трата времени.

ЗЫ регулярка для комментов далеко не столь тривиальна)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы