2010-12-10 52 views
6

我有一个Java应用程序,将图像作为输入并输出另一个图像。我有一个受欢迎的主机(PHP + MYSQL主机)的网站。我想使用PHP在网站上创建一个页面,用户可以上传图像,然后将图像传递到Java应用程序。使PHP执行并与Web服务器上的Java应用程序进行通信

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

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

Java应用程序相当沉重,因为它做了很多图像处理。我应该卸载Java应用程序到另一个Web服务器?如果是的话,是否有任何服务可以运行我的Java应用程序?

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

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

我希望你明白,请建议我可以用来实现这一点的技术,并且如果你有更好的主意,请发布它! 谢谢!

回答

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有很多可能有用的功能。

0

将您的java应用程序变成一个web应用程序,PHP可以通过url调用至极图像的URL,以便Java可以下载它吗?

http://yourjavaserver/imageprocessing?imgurl=IMAGE_URL

和Java Servlet的将与图像文件itlsef答复。

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

0

我觉得这里最好的办法是与你的Java应用程序运行的cron的(或守护进程)来自数据库的细节。这将需要在生成完成后在用户部分进行(一个或多个)页面刷新,此时您的脚本可以从数据库/文件系统中调用图像。

由于PHP网页上的超时限制,我不认为您可以实时做到这一点。但是,您可以编写一个java applet,它可以在将文件发送到服务器之前接收并处理该文件(或者取决于您打算如何使用它,也许在转换后您不需要上传它)。

2

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

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

或数据首先被存储在数据库中的BLOB和处理作业放入任务队列(一个“消息队列”)。这有一个好处,即在数据被POST后,PHP客户端请求会立即返回。然后,PHP应用程序可以在Google App Engine处理图像时轮询结果数据。 PHP方面将会以这种方式更具响应性。

+0

谢谢!我不知道这件事。我会仔细看看的。 – tHeSiD 2010-12-10 20:00:19

相关问题