在 PHP 和 Perl 之间传递大量数据

Posted

技术标签:

【中文标题】在 PHP 和 Perl 之间传递大量数据【英文标题】:Pass large amout of data between PHP and Perl 【发布时间】:2012-08-06 17:17:54 【问题描述】:

我有一个 perl 脚本,它对大量数据执行操作并构建一个表。我想从 php 调用这个脚本。我正在传递包含字符串、引号和各种讨厌的表格数据,所以很简单

 passthru('./path/to/pl $var1 $var2');

不会。我正在考虑对数据进行 JSON 编码,然后对 JSON 进行 base64 编码并传递如下:

 passthru('./path/to/pl "$base64edJSON"');

这是正确的方法还是有更好的方法? perl 脚本必须通过 return、stdout 或其他方式将完成的表返回给 PHP 脚本。

【问题讨论】:

【参考方案1】:

您可以使用proc_open 调用perl 脚本。然后您可以通过标准输入将输入提供给它,并从标准输出获取输出/错误。 Perl 脚本将作为管道运行。

这解决了临时文件的任何混乱。

【讨论】:

【参考方案2】:

在 PHP 端,open a bidirectional pipe 到 Perl 进程并写入它的管道。在 Perl 方面,从 STDIN 读取。

要返回数据,请在 Perl 中写入 STDOUT。在 PHP 中,从管道中读取。

您不需要编码。

【讨论】:

【参考方案3】:

我会将 PHP 中的内容序列化为一个文件,然后将其加载到 Perl 中。您可以使用 CPAN 模块PHP::Serialization。

【讨论】:

我将如何通过?就像 passthru('./path/to/pl "$serializedStr"'); 中的序列化字符串一样空格、引号和其他乱七八糟的东西呢? 如果不需要的话,我讨厌写入光盘

以上是关于在 PHP 和 Perl 之间传递大量数据的主要内容,如果未能解决你的问题,请参考以下文章

仅使用客户端在两个 HTML 页面之间传递大量数据

Activity之间使用intent传递大量数据带来问题总结

在 Perl 中使用 awk 解析两个字符串之间的所有内容

回显大量 HTML 数据需要很长时间 PHP

如何使PHP程序执行页面跳转时传递大量参数

如何在不重复的情况下在进程之间共享大量数据? (IPC)