[英]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.