Как использовать Tika через PHP, когда оба установлены на одном сервере?

  • Мне нужно создать внутренний веб-сайт, который позволяет пользователям загружать файлы .doc, .pdf, .xls и видеть текст в поле для текстовой области.
  • Я создал сайт на PHP до такой степени, что пользователь может загружать файлы.
  • Я установил Tika на свой сервер и в командной строке могу набрать java -jar tika-app-1.10-SNAPSHOT.jar -m manu.pdf > output.txt который успешно создает текст, который мне нужен в выходном файле.

Как лучше всего вызвать Tika из PHP, чтобы получить простой текст загруженного файла в PHP?

Осматривая вокруг, я нахожу:

  1. PHP-код, который делает вызовы к «серверу Tika», например с CURL
  2. Классы PHP Wrapper для Tika, которые, кажется, используют Tika на том же сервере, на котором установлен PHP, но я не заставил их работать.
  3. Кроме того, я мог бы просто позвонить Тике через exec команда.

Но я не уверен, что это самый простой способ продолжить.

4

Решение

Если это на ваших собственных управляемых серверах, и оба PHP а также Тика места вам известны, просто используйте exec,
Или, если вы предпочитаете лучший контроль (который, я подозреваю, вам не нужен), используйте shell_exec
Если у вас есть проблемы с производительностью, и / или вам нужно масштабировать эту вещь, то есть место для более сложного решения.

2

Другие решения

Для запуска на удаленном сервере я предлагаю вам использовать curl или же Guzzle позвонить по адресу (но вы также можете просто использовать file_get_contents и передайте ему URL для API, который будет вызывать Тика на удаленном сервере.

Для запуска разбора на локальный (Тика а также PHP на том же сервере) я использовал Synfony / Процесс.

Я бы лично отговорил вас от использования exec,


Я бы добавил, что наличие Tika на другом сервере заставит вас отправить на этот сервер всю полезную нагрузку файла, загруженную пользователем.
Хотя более быстрое решение состоит в том, чтобы просто получить загрузку с выполнением PHP и напрямую вызвать процесс Tika из того же сценария (или, по крайней мере, с той же машины).
В противном случае вам нужен скрипт, который:

  • получает загруженные данные
  • добавления это к Тика сервер (может быть, как полезная нагрузка вызова API)
  • говорит Тика (через API) на удаленном сервере для разбора файла
  • загрузок ответ проанализировал данные
  • работает с ним или отображать его.

Как я подчеркнул, будет намного больше накладных расходов, так же как и связь между двумя серверами; и это не желательно, когда файл для анализа, может быть, 35 МБ PDF-файл, не так ли?
Пользователь должен будет ждать, скажем, 2 минуты для загрузки, PLUS другие, скажем, 20 секунд, чтобы отправить файл в Тика сервер, а затем другие, скажем, 3 секунды, чтобы получить результат анализа в текстовом формате.

Я настоятельно рекомендую остаться и работать на том же PHP сервер.

2