如何在一台服务器上安装Tika时使用Tika?

时间:2015-06-04 14:09:02

标签: php apache-tika

  • 我需要建立一个内部网站,允许用户上传.doc,.pdf,.xls文件,并在textarea框中查看文字。
  • 我已经在PHP中创建了网站,用户可以上传文件。
  • 我已经在我的服务器上安装了Tika,并且在命令行中可以输入java -jar tika-app-1.10-SNAPSHOT.jar -m manu.pdf > output.txt,它会在输出文件中成功创建我需要的文本。

从PHP调用Tika以获取上传文件的纯文本到PHP的最佳方法是什么?

搜索我发现:

  1. 调用“Tika服务器”的PHP代码,例如与cURL
  2. 用于Tika的PHP Wrapper类似乎在安装PHP的同一台服务器上使用Tika,但我还没有让它们工作。
  3. 或者,我可以通过exec命令调用Tika。
  4. 但我不确定最简单的方法是什么。

2 个答案:

答案 0 :(得分:2)

如果它位于您自己的托管服务器上,并且您已知 PHP Tika 位置,请使用exec。 或者如果您更喜欢更好的控制(我怀疑您不需要),请使用shell_exec
如果你有一些性能问题,和/或需要扩展这个问题,那么就有更复杂的解决方案。

答案 1 :(得分:2)

更简单的方法(调用API)

要在远程服务器上运行,我建议您使用curlGuzzle来呼叫该地址(但您也可以使用file_get_contents并将其传递给API的网址将在远程服务器上调用 Tika

其他方法(在本地服务器上执行进程)

为了在同一服务器上的本地( Tika PHP )上运行解析,我使用了Synfony/Process

我个人不鼓励你只使用exec

我想补充说,在另一台服务器上安装Tika会强制您向该服务器发送从用户上传的整个文件负载。 更快的解决方案是通过PHP执行来接收上传,并直接从同一脚本(或至少从同一台机器)调用Tika进程。 否则你需要一个脚本:

  • 接收上传的数据
  • 上传 Tika 服务器(可能是API调用的有效负载)
  • 告诉远程服务器上的 Tika (通过API)来解析文件
  • 下载响应解析数据
  • 使用它或显示它。

正如我高调的那样,两台服务器之间的通信会有更多的开销;当要解析的文件可能是35MB的pdf文件时,这是不可取的,是吗? 用户必须等待,比如2分钟才能上传, PLUS 其他,比方说,20秒将文件发送到 Tika 服务器,然后其他,让我们说3秒钟来获得文本格式解析结果。

我强烈建议您继续使用相同的 PHP 服务器。