Задать вопрос

Почему 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.";
}

 ?>
  • Вопрос задан
  • 2639 просмотров
Подписаться 3 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
AxisPod
@AxisPod
Подобные вещи проще делать без регулярок. А регулярка видимо выжирает много памяти.
Ответ написан
Комментировать
@Vampiro
Объединить несколько файлов в один и удалить комментарии для уменьшения размера конечного файла.

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

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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽