perl - 如何跨 Perl CGI脚本进行通信?

  显示原文与译文双语对照的内容
61 4

我正在搜索跨两个Perl脚本的有效通信方式。我有两个脚本;脚本 1生成一些数据。我希望我的脚本 2能够访问该信息。

最简单的/dumbest方法是将脚本 1生成的数据写为文件,然后使用脚本 2读取它。还有别的方法?是否可以将数据存储在内存中,并使它的可以用于脚本 2 ( 当然,我的Linux支持)?意思是用脚本 1来保存一些数据,并使脚本 2能够访问它。

不保证脚本 2在脚本 1后运行。所以应该有一些方法可以使用看门狗定时器释放内存。

让我展示一些更多的上下文。我正在使用 cgi perl在web服务器上运行这些脚本。所以在点击按钮脚本 1的时候,它就会生成一个html网页。now user user add add page.Now Script可以在服务器上读取数据,并使它的可用,但更有效的方法是在服务器上读取数据,并使它的可用。现在,我想避免将生成的页面作为文件写下来。我想把它存储在记忆中

时间:原作者:0个回答

89 2

这取决于你的用法。一个大的数据集?有很多小消息你有canre的数据保存?是完全异步的?

有些选项是:

  • 除了最高性能的网站之外,所有的网站都要收费,最好的办法是把我们的HTML页面写到文件里 !web服务的通信是在性能上作为性能的botttleneck,不要同时使用任何非文件解决方案( 共享内存,缓存,中间服务器) 。

  • 如果你正在运行mod_perl解释器,则可以在内存中运行软件包,以便编写程序CGI进程和读取器CGI进程可以在内存中使用它,从而使你可以在内存中使用它们。当然,与读取器/编写器相关的常见同步/死锁和持久性问题需要考虑。

    作为替代,使用 Apache::Session 会话存储会话数据。

  • 如你所见,共享内存。例如使用 IPC::ShareLite,ipc:: cache,或者从服务器这个解决方案。

    另外,请检查第 16章Recipe从"o perl'reilly cookbook ( 因为非盗版版本不在线我知道的任何地方)

  • 使用永久 medium 。文件是一个选项。数据库是另一个数据库。

  • 对于异步,请使用中间消息系统( 。MQ,Tibco,更轻量) 。在这个场景中可能有点过分了,但是一个有效的选项要注意。这一个很可以能是stablem实体和 optmized,但可以能不是自由和更灵活的/。

  • 或者滚动你自己的简单消息传递系统服务器- 对于你看起来很简单的一个很简单的系统来说,它并不那么复杂。

    监听第一个进程的请求的一个端口,听另一个端口来发送数据。

原作者:
137 5

你把你的问题标记为"cgi"。它们都是CGI程序?这种情况下,他们可以通过发出HTTP请求互相通信。

但是,你将得到更多关于为什么要这样做以及需要完成的操作的更多信息。对于Perl程序来说,以某种方式通信是很容易的,但这并不意味着对于你来说是正确的答案。

当你对CGI程序之间的交互有复杂的需求时,你可以能需要移动到处理大量细节的web框架。你想启动催化剂的地方。甚至有本书。

原作者:
...