Допустимый размер памяти 134217728 байт ошибка при использовании библиотеки PdfParser

Я пытаюсь извлечь данные из файлов PDF с помощью библиотеки PdfParser.

Когда я попробовал это с несколькими большими и умеренно сложными файлами PDF, это дало мне ошибку:

допустимый размер памяти 134217728 байт

Мне нужно какое-то постоянное решение, либо библиотека сломана, либо моя реализация неверна.

Вот мой код:

class crawlController extends Controller
{
  public function crawler()
  {
        $dirPath = '/home/development/pdf_root';
        $this->getFileFolderTree($dirPath);
  }

    public function getFileFolderTree($rootDirectory)
    {
        $this->goIntoFolder($rootDirectory);
    }

    public function goIntoFolder($dirPath)
    {
      // Get all the direct sub folders of the root folder
      try
      {
        $dirList = File::directories($dirPath);
      }
      catch(\App\Exceptions\InvalidArgumentException $e)
      {
        require $e->getMessage();        
      }
      if(count($dirList) == 0)
      {
        //search for files now
        $this->searchFiles($dirPath);
      }
      else
      {
        // Loop through the list of diectories
        foreach ($dirList as $dir) 
        {
          // Print name of the selected directory
          echo "Folder name : ",basename($dir)," Parent Folder :",basename($dirPath),"<br/>";

          // Recursivly search selected directory
          $this->goIntoFolder($dir); 
        }
        echo "<hr><br/>";
      }
    }

    public function searchFiles($dirPath)
    {
      // Read all files
      $files = File::files($dirPath);
      $result = FALSE;

      // If no files exists
      if(count($files) > 0)
      {
        foreach ($files as $file) 
        {
          // Check if file is a pdf file.
           if(0 == strcasecmp('pdf',File::extension($file)))
           {
              // Read the file
              $this->readFileData($file);
           }
        }        
        $result = TRUE;
      }
      return $result;
    }

    public function readFileData($file)
    {   
        // Build PdfTotext object
        $parser = new \Smalot\PdfParser\Parser();
        $pdfLoad = $parser->parseFile($file);

        $content = $pdfLoad->getText();
        $txtFilename = basename($file).".txt";
        $bytesWritten = File::append($txtFilename,$content);
        if($bytesWritten)
        {
          echo "success : ",$file;
        }
        else
        {
          echo "Faliure : ",$file;
        }
        unset($parser);
    }
}

person Ayush pratap    schedule 05.08.2017    source источник
comment
Спасибо за ответ, у меня есть следующие вопросы: 1. До какого значения я должен увеличить значение? 2. Является ли увеличение объема памяти постоянным решением.   -  person Ayush pratap    schedule 05.08.2017
comment
Я не знаю, что вы имеете в виду, вам явно уже нужно расширить его за пределы 128 МБ. Если это слишком много для этого сервера, возможно, вы могли бы попробовать выполнить синтаксический анализ на другом.   -  person Łukasz Zaroda    schedule 05.08.2017
comment
Возможный дубликат Разрешенный размер памяти 134217728 байт исчерпан   -  person Neobugu    schedule 05.08.2017
comment
Хорошо, я понимаю, что мне нужно увеличить его до 128 МБ, но мои файлы PDF имеют размер только 3,5 МБ (на которых я тестировал). Так мы говорим о распределении оперативной памяти?   -  person Ayush pratap    schedule 05.08.2017
comment
@Rhopercy: Это похоже, но я также хочу выяснить, почему мой код занимает так много памяти только для извлечения данных из файлов PDF с общим размером 3,5 МБ. Моя конечная цель - извлечь данные из pdf-файлов в объединенной памяти ~ 500 МБ, в этом случае я не знаю, сколько памяти мне понадобится.   -  person Ayush pratap    schedule 05.08.2017
comment
У вас require $e->getMessage(), может быть, сменить на echo $e->getMessage();?   -  person Tpojka    schedule 05.08.2017
comment
@Tpojka: это была опечатка. Спасибо, что указали на это.   -  person Ayush pratap    schedule 07.08.2017