我有一个 perl 应用程序,它处理来自本地文件系统的文本文件(将其视为过于复杂的 grep)。我想设计一个 webapp,它允许远程用户通过设置所需的参数来调用 perl 应用程序。一旦它运行起来,就需要在 perl 应用程序和 webapp 之间进行某种关于进程状态(正在运行、完成百分比、完成)的通信。哪个是推荐的两个进程之间的通信方式?我在考虑数据库表,但我不确定这是一个好主意。
任何建议表示赞赏。
我有一个 perl 应用程序,它处理来自本地文件系统的文本文件(将其视为过于复杂的 grep)。我想设计一个 webapp,它允许远程用户通过设置所需的参数来调用 perl 应用程序。一旦它运行起来,就需要在 perl 应用程序和 webapp 之间进行某种关于进程状态(正在运行、完成百分比、完成)的通信。哪个是推荐的两个进程之间的通信方式?我在考虑数据库表,但我不确定这是一个好主意。
任何建议表示赞赏。
Stackers,继续编辑此答案以添加代码示例或链接。
DrNoone,我想到了两种方法。
打回来
您的 greppy 应用程序需要提供一个回调函数来返回状态并由 Web 应用程序定期调用。
事件
如果您已经在使用一个 Web 服务器/应用程序框架,该框架公开了一个可从外部应用程序使用的事件循环(在 Perl 领域不太可能),那么这是有道理的。greppy 应用程序在状态更改时触发事件,Web 应用程序附加/监听它们并采取相应的行动。
对于您所设想的 IPC,普通数据库不太适合。而是查看消息队列。要获得出色的互操作性,请选择符合 AMPQ 的实施。
如果您使用运行该过程,open($handle, "cmd |")
您可以实时读取结果并在您的响应打开时将它们直接打印到 STDOUT。这可能是最简单的方法。