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

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

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

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

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

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

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

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

现在我的问题是:是否可以在流行的webhosts上执行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图像库具有许多可能有用的function。

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方面会以这种方式响应更快。

将你的java应用程序变成一个web应用程序会不会更容易,PHP可以通过url调用它会放置图像的url以便java可以下载它?

比如http:// yourjavaserver / imageprocessing?imgurl = IMAGE_URL

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

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

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

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