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

时间:2012-08-06 17:17:55

标签: php perl ipc

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

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

不会这样做。我在想JSON编码数据然后base64编码JSON并传递如下:

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

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

3 个答案:

答案 0 :(得分:2)

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

这可以解决临时文件的任何混乱问题。

答案 1 :(得分:1)

在PHP端,open a bidirectional pipe到Perl进程并写入其管道。在Perl方面,请阅读STDIN。

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

您无需编码。

答案 2 :(得分:0)

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