PHP站点调度Java执行?

PHP站点调度Java执行?,java,php,web-services,Java,Php,Web Services,我正在尝试将我的(稍微有限的)PHP经验与我的(更好的)Java经验结合起来,在一个项目中,我需要允许将Java源文件上传到服务器,然后服务器在服务器上执行Javac来编译它 然后,在设定的时间(例如上传时指定的时间),我需要在服务器上运行一次,这将生成一些数据库信息,供PHP站点显示 为了描述我目前的编程能力,我制作了许多桌面Java程序,并且对“纯”Java充满信心,但到目前为止,我只承担了几个PHP项目(包括使用CodeIgniter框架) 我使用PHP作为前端的动机是因为我知道它非常快速

我正在尝试将我的(稍微有限的)PHP经验与我的(更好的)Java经验结合起来,在一个项目中,我需要允许将Java源文件上传到服务器,然后服务器在服务器上执行Javac来编译它

然后,在设定的时间(例如上传时指定的时间),我需要在服务器上运行一次,这将生成一些数据库信息,供PHP站点显示

为了描述我目前的编程能力,我制作了许多桌面Java程序,并且对“纯”Java充满信心,但到目前为止,我只承担了几个PHP项目(包括使用CodeIgniter框架)

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


有什么建议,你可以给什么技术,我应该考虑用以弥合这个差距,什么资源可以帮助使用该技术?我已经看了一些,但很难找到有助于实现我所需的文档。

有很多方法可以实现这一点,但您没有提供足够的详细信息,因此我将提出一些。。。编译java源代码对于一个普通的web请求来说可能会花费太长的时间,因此我的建议是让接受java源文件的PHP脚本运行后台命令,该命令编译源文件并将其进度记录到数据库或日志文件中。通过这种方式,您可以将用户重定向到一个页面,“请稍候,您的源代码正在编译”,并使用Ajax每隔几秒钟检查一次以查看更新的进度。如果这是你想去的路线,请查看

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


在这两种情况下,进行编译的程序都可以用任何语言编写,如果您愿意,甚至可以用Java。

这是一个专用的自我管理服务器,还是一个共享主机?我必须说,这比应该的更难回答。我不确定我能肯定地获得哪个,但它有可能在专用服务器上运行,但也有可能在共享硬件上的虚拟服务器上运行。如果可能的话,对于这两种可能性的任何建议/链接都将被删除。为此,greatI强烈建议使用专用或虚拟环境。你有根访问权限的东西。在共享环境中执行此操作可能很棘手。对于CRON作业,会有什么样的开销?大多数上传可能会在最后期限前后进行,因为这是向提交系统的发展,因此如果只需要在预定义的最后期限前后运行几次CRON作业,那么经常运行CRON作业似乎效率低下。CRON是否有任何适合这种系统的灵活性?如果上传需要快速处理,我建议使用PHP的
exec
命令来启动后台作业。我必须保证的主要问题是上传比处理具有“优先级”。在这种情况下,您可能会反对使用exec,因为我假设它会创建额外的“竞争”线程吗?理想情况下,最好创建某种形式的等待处理的上传“队列”,并以给定的速率处理这些上传。在这种情况下,你有什么建议吗?(在Java中,我可能只是创建一个单独的线程,在其中以增量处理对象)您当然可以这样做。只要有一个持续运行的Java守护进程,检查数据库中是否有新的上传,并生成线程来处理它们。我一直在尝试使用exec命令来启动Java端的东西,但几乎没有成功(唯一的结果是非常有用的错误代码“1”)。如果让Java后端持续运行,如何处理与它的交互(例如,获取它可能遇到的任何错误状态的信息)?类似地,如何处理Java的启动/关闭(例如,如果只需要6个月,它就不会全年轮询DB)?