簡體   English   中英

PHP和Perl CGI腳本之間的通信

[英]Communication between PHP and Perl CGI scripts

我有兩個腳本可以在服務器上執行不同的任務。 一種是用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)

我做錯了什么?

而且這兩個腳本並排放置。 他們之間有更好的溝通方式嗎?

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];

但是$ response-> is_success在兩種情況下都返回false?

在這兩種情況下,您都將輸出默認的HTTP狀態 ,即“ 200 OK”。 您需要輸出一個狀態代碼該狀態代碼指示is_success失敗的失敗。

當我嘗試打印響應時,我得到了這個

那是一個HTTP::Response對象 如果$response->decoded_content中獲取文本,則需要檢查$response->decoded_content

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM