PHP和Perl CGI脚本之间的通信

时间:2013-05-18 12:57:21

标签: php web-services perl cgi

我有两个脚本在服务器上执行不同的任务。一个用Perl(.cgi)编写,另一个用PHP编写。

我试图通过执行以下操作从perl CGI脚本发出请求:

$ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
$ua->timeout(30);

$queryStr = (xxxMaskedxxx);
$request = HTTP::Request->new('GET', $queryStr);
$response = $ua->request($request);
if ($response->is_success)
{
        $search = strpos($res->content, "not");
        if($search==true)
        { return -1; }
}

我尝试了两种方法从PHP发回结果:

此:

HttpResponse::setCache(true);
HttpResponse::setContentType('text/html');
if (!$result)
        HttpResponse::setData("<html>Message not delivered</html>");
else
        HttpResponse::setData("<html>Message successfully delivered</html>");
HttpResponse::send();

而且:

echo "Content-type: text/html\n\n";
if (!$result)
      echo 'Message not delivered' . PHP_EOL;
else
      echo 'Message successfully delivered' . PHP_EOL;

但是$response->is_success对于这两种情况都返回false?当我尝试打印响应时,我得到了这个:

response is HTTP::Response=HASH(0x97a8b34)

我做错了什么?

这两个脚本并排坐在一起。有没有更好的方式来沟通?

2 个答案:

答案 0 :(得分:1)

Perl使用命令行参数调用cli.php脚本,

#!/usr/bin/perl

my $content = `/usr/bin/php cli.php xxxMaskedxxx`;

print $content;

cli.php回应收到的论点

<?php

// output first argument from command line
print $argv[1];

答案 1 :(得分:1)

  

但$ response-&gt; is_success在两种情况下都返回false?

在这两种情况下,您输出的默认值为HTTP status,即“200 OK”。您需要output a status code表示is_success失败。

  

当我尝试打印响应时,我得到了这个

那是HTTP::Response object。如果你想从中获取文本,你需要检查$response->decoded_content