使PHP在Web服务器上执行并与Java应用程序通信

时间:2010-12-10 15:10:34

标签: java php

我有一个java应用程序,它将图像作为输入并输出另一个图像。我有一个热门主机的网站(PHP + MYSQL主机)。我想在网站上用PHP创建一个页面,用户可以上传一个图像,然后将图像传递给Java应用程序。

我计划做的是当用户上传图片时,它会存储在网络服务器上的文件夹中。然后,我将调用服务器上的java应用程序,将图像的url作为参数传递,然后java应用程序将输出另一个图像,比方说,输出到结果文件夹。执行后的PHP页面将在浏览器上显示结果图像。

现在我的问题是: 是否可以在流行的webhosts上执行java应用程序(例如我的是WebHostingBuzz.com)?

java应用程序相当繁重,因为它进行了大量的图像处理。我应该将Java应用程序卸载到另一个Web服务器吗?如果是,是否有任何服务将运行我的Java应用程序?

(可选)这是我的java应用程序的演示,我不想存储人们上传的图像。有没有办法可以直接将上传的图像传递给java应用程序并输出直接生成的图像而不是将其存储在Web服务器上?我更喜欢这个,因为如果图像很大,我可以让PHP在超时后停止执行。

如何与PHP中的Java应用程序进行通信以获取有关其执行的信息,例如,当PHP调用java应用程序时,页面必须等到应用程序完成处理?我希望java应用程序向PHP页面发送一个响应,说明处理已完成,页面被​​重定向或刷新。

我希望你明白这个想法,请建议我可以用来实现这个的技术,如果你有更好的想法,请发布它! 谢谢!

4 个答案:

答案 0 :(得分:4)

  

现在我的问题是:是否可以在流行的虚拟主机上执行java应用程序(例如我的是WebHostingBuzz.com)?

技术上可行。但托管必须在主机上安装JRE,并为PHP用户提供足够的操作系统级别和文件系统级别的权限。所以你真的依赖托管他们是否提供这个机会。最好是联系他们的支持团队并提出要求。

如果支持,则可以使用shell_exec()

$result = shell_exec("java -jar /path/to/imageprocessor.jar " + $imagepath);
if ($result) {
    // Shell execution succeed.
} else {
    // Shell execution failed.
}

对于异步通信/后台处理,客户端必须发出一个ajaxical请求。

如果不支持,请考虑将Java移植到PHP。 GD image library具有很多可能有用的功能。

答案 1 :(得分:2)

Google App Engine允许托管Java(和Python)Web应用程序。 SDK和基本帐户免费。使用SDK,您可以在本地开发和测试应用程序,然后只需部署到App Engine(可以使用NetBeans和Eclipse插件)。

然后,PHP应用程序可以将HTTP POST中的数据发送到Google App Engine应用程序,并将结果输入响应数据。

或者数据首先存储在数据库blob中,处理作业放在任务队列中(“消息队列”)。这样做的好处是PHP客户端请求将在数据发布后立即返回。然后,PHP应用程序可以在Google App Engine处理图像时轮询结果数据。 PHP方面会更加敏感。

答案 2 :(得分:0)

将您的Java应用程序变成Web应用程序会不会更容易,PHP可以通过url调用它会放置图像的url以便java可以下载它吗?

喜欢http://yourjavaserver/imageprocessing?imgurl=IMAGE_URL

并且java servlet将使用图像文件itlsef进行回复。

你可以在谷歌上寻找“java hosting”,找到这个主机,但它比PHP托管更昂贵。也许最好的选择是获得一个可以托管PHP和Java应用程序的专用服务器......

答案 3 :(得分:0)

我认为你最好的选择是你的java应用程序运行为cron(或deamon),可以从数据库加载文件详细信息。这将需要在生成完成后对用户部分进行(一次或多次)页面刷新,此时您的脚本可以从数据库/文件系统中调用该图像。

由于PHP网页的超时限制,我认为您无法实时执行此操作。但是,您可以编写一个java applet,它可以在将文件发送到服务器之前获取文件并进行处理(或者根据您打算如何使用它,也许您不需要在转换后上传它?)。