Почему 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...
Хотя по факту это бесполезная трата времени.

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

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

Похожие вопросы