2010-05-18 54 views
2

我想开始将我的(稍微有限的)PHP体验与我的(更好的)Java体验结合起来,在一个需要允许将Java源文件上传到服务器的项目中,服务器随后在其上执行Javac编译它。PHP网站调度Java执行?

然后,在设定的时间(例如在上传时指定),我需要在服务器上运行一次,这将生成一些数据库信息以显示PHP站点。为了描述我目前的编程能力 - 我制作了许多桌面Java程序,并对'纯'Java有信心,但迄今为止只进行了几个PHP项目(包括使用CodeIgniter框架)。

我将PHP作为前端的动机是因为我知道它非常快速,轻量级,并且我将能够很容易地显示出我需要的结果(简单的数据库读取)。理想情况下,所使用的技术应该能够在本地主机上开发(例如WAMP,Tomcat等)。

有什么建议可以给我应该考虑用什么技术来弥补这个差距,以及什么资源可以帮助使用该技术?我已经看了一些,但一直在努力寻找帮助实现我所需要的文档。

+0

这是一个专用的自我管理服务器,还是共享主机? – tylermac 2010-05-18 13:02:08

+0

我必须说这比回答更难回答。我不确定我能够获得哪些内容,但有可能在专用服务器上运行,但也有可能在共享硬件上的虚拟化服务器上​​运行。如果可能的话,任何建议/链接,这两个可能性会很大 – obfuscation 2010-05-18 13:14:45

+0

我强烈建议为此专用或虚拟环境。你有root权限的地方。在共享环境中执行此操作可能会非常棘手。 – Josh 2010-05-18 15:14:29

回答

1

有很多方法可以解决这个问题,但是你没有提供足够的细节来缩小到只有一种方法,所以我会提出一些......编译java源代码可能需要很长时间才能完成正常的Web请求,所以我的建议是让接受Java源文件的PHP脚本运行后台命令,后台命令编译源文件并将其进度记录到数据库或日志文件。这样,您可以将用户重定向到一个页面,该页面显示“请稍候,正在编译您的源代码”并使用Ajax每隔几秒检查一次以查看更新的进度。如果这是您想要去的路线,请查看PHP exec command

对于PHP来说,为每个上传的文件简单地在数据库中创建一个ID并呼叫move_uploaded_file将源文件移动到“传入”目录可能会更加有益。从那里开始,经常运行的cron作业可以扫描传入目录或数据库中的源文件,编译它们,并在完成时更新数据库。

无论是哪种情况,编译的程序都可以用任何语言编写,甚至可以用Java编写,如果您愿意的话。

+0

关于CRON工作,那里有什么样的开销?大多数上传可能会在最后期限之前完成,因为这是一个向提交系统发展的过程,所以如果仅仅需要在预定义的最后期限之前运行几次,CRON工作往往会非常低效。 CRON有没有适合这种系统的灵活性? – obfuscation 2010-05-18 15:09:02

+0

如果应该快速处理上传,我建议使用PHP的'exec'命令来启动后台作业。 – Josh 2010-05-18 15:13:24

+0

我必须保证的主要关注点是,上传过程中被赋予了“优先”的意义。在这种情况下,你是否会反对使用exec,因为我认为它会创建额外的“竞争”线程?理想情况下,最好创建某种形式的等待处理的上传“队列”,并以给定速率处理这些上传。在这种情况下你有什么建议吗?(在Java中,我可能只是创建一个单独的线程,其中对象以增量进行处理) – obfuscation 2010-05-18 15:42:40