PHP的Perl解释器

3
我的新网站计划中的一些功能已经作为免费Perl模块可用。因此,我正在考虑使用它们,而不是在PHP中再次编写它们。我打算使用execsystem函数调用Perl脚本,但这样会很慢。但我发现了一个PECL扩展,它允许PHP解释Perl代码
这会影响我的其他未使用Perl脚本的PHP页面的性能吗?我知道额外的模块会增加我的内存使用量,但除此之外,还会有什么问题吗?

我非常确定通过exec/system调用Perl会比在PHP内部运行它要快得多...为什么会慢呢?你从哪里得到的这个信息? - Jan Hančič
PHP需要在Perl输出上执行某些操作,需要PHP调用吗?Perl脚本能够独立处理所有事情吗? - bcosca
如何从Perl传递URL或变量到PHP?调用Perl脚本并传递变量,同时使用可变化的Perl脚本名称。 - Gordon
@Jan - 我的问题是,额外的解释器会减慢我的其他 PHP 页面吗?根据 Chas 的回复,我认为它不会产生影响。 - Joyce Babu
@stillstanding - 不是的。Perl模块不是独立的。它只是提供了一些方便的功能,比如WHOIS查询。 - Joyce Babu
2个回答

3
看起来它只是将perl嵌入到PHP进程中。你应该会看到几兆字节的内存增加以及你在Perl中创建的任何数据。它不应该减慢任何代码运行速度。它只是另一个库坐在内存中等待你调用它。这种解决方案有两个好处:你不必浪费时间生成另一个进程,也不必解析从打印文本返回的返回值。
另一种解决方案是编写Perl守护进程并通过域套接字、管道或其他IPC方法与之通信。
你可能还对涵盖 嵌入perl 的Perl文档感兴趣。

请问您能否指向一些关于如何使用守护进程的文档或教程?解释器和守护进程哪个更快? - Joyce Babu
内置解释器速度将更快。无论如何,IPC都会增加一些额外开销。然而,根据您想要访问哪些Perl模块,将它们放在应用程序守护程序中可能是更好的关注点分离。POE::Component::IKC专门为此类守护进程编写。还有一些使用XMLRPC的模块。 - Leolo

1

这些Perl模块提供的功能是否在本地PHP中根本无法实现?还是它们足够简单,可以将它们转换为PHP?

换句话说,你真的需要在这里运行Perl代码吗?

即使您不影响性能,通过添加语言,您也会影响系统的可维护性。

有时确实需要在语言之间进行接口,但对我来说,这似乎不是其中之一。对我来说,如果您能在PHP中找到或编写等效的代码,那么您会得到更好的服务。

您在其他地方的评论中说Perl代码“只提供了一些方便的功能,例如whois查找”,因此我快速搜索并找到了这个:http://www.phpwhois.org/。还有许多其他相关的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接