gpt4 book ai didi

javascript - php - jar 文件的后台进程,如何在进程完成时获得异步通知?

转载 作者:行者123 更新时间:2023-11-28 07:30:29 27 4
gpt4 key购买 nike

场景:我有一个 php vagrant virtualbox 服务器和一个可运行的 jar,需要几分钟才能运行。理想情况下,当用户转到我的应用程序中的某个路径时,服务器将开始在后台运行所述 jar,这样用户就不必等待查看空白页面,并且当 jar 完成执行时,页面将自动刷新(或其中的数据)向用户提供从 jar 的输出中获取的信息。

问题:到目前为止,我设法使用 exec() 函数在后台运行 jar。我什至可以获取进程 ID 并检查它是否仍在运行。我遇到的问题是,当 jar 停止运行时如何通知 php(按说)而不阻止正常执行?有什么办法可以做到这一点吗?我已经搜索过从 Laravel 队列到 fork 运行进程的所有地方,但没有任何东西(据我所知)适合我的需求。

编辑:我想我可能已经找到了解决方案,但无论如何我想询问社区。假设我在页面加载后使用 javascript 循环(带有 setInterval),并且在循环内,我向服务器发出 ajax 异步请求,询问进程是否已结束,如果是,则返回 jar 的输出并使用新数据更新网页。这将形成一个非常“拉”的解决方案,而不是更好的“推”解决方案,但我什至不知道推方法是可能的。

我仍在学习为网络应用程序编写代码,因此这可能是一个愚蠢的问题,对此我深表歉意。如果这个解决方案完全偏离轨道,请随时让我走上正确的道路。

提前致谢,

最佳答案

你应该看看已经为此目的制作的 JS 库,例如:NodeJS。

它使用户和您的网络服务器之间的管道保持开放,您可以从服务器向特定用户或一组用户发送通知。

我自己真的很喜欢。

关于javascript - php - jar 文件的后台进程,如何在进程完成时获得异步通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175334/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com