2013-12-17 86 views
0

我有http://192.168.x.x運行nginx的Web服務器,以及一個Perl模塊使用http://nginx.org/en/docs/http/ngx_http_perl_module.htmlNginx的Perl模塊,與LWP :: UserAgent的

我需要做的LWP使用該模塊內部的GET請求安裝。這是我的:

my $url = "http://192.168.x.x/app/test.php"; 
my $ua = LWP::UserAgent->new; 
$ua->timeout(5); # muere a los 5 segundos sin respuesta. 
$ua->default_header('Cookie' => "FOO=BAR;PATH=/"); 
my $resp = $ua->get($url); 
if ($resp->is_success) { 
    my $message = $resp->decoded_content; 
    print STDERR "Received reply: $message\n"; 
} else { 
    print STDERR "HTTP GET error code: ", $resp->code, "\n"; 
    print STDERR "HTTP GET error message: ", $resp->message, "\n"; 
}; 

每次我做這個請求我得到錯誤代碼500:讀取超時。但是,如果我使用另一臺服務器工作得很好。問題是當我使用相同的服務器,我運行腳本。

+0

你爲什麼要調用一個php腳本? Web服務器錯誤日誌在哪裏?通常,當500發生時,您會在錯誤日誌中獲得一些記錄。 php腳本與perl集成有什麼關係? –

+0

那段代碼是我在perl_set指令中用作處理程序的子程序的一部分。我需要在同一臺服務器上調用一個php腳本來檢索一些數據。日誌中沒有錯誤消息...... :( –

回答

2

我想這是因爲nginx只有一個工作線程。當你在nginx裏調用你的perl代碼時,它會阻塞整個服務器。所以一個nginx不能同時處理你的阻塞perl代碼和php處理程序。這是僵局。您可以嘗試Nginx::HTTP,在等待http響應時不應該阻止nginx。所以,我認爲這將起作用。

+0

謝謝,這非常有幫助。 –

相關問題