在 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 之间传递大量数据的主要内容,如果未能解决你的问题,请参考以下文章