[PHP] XMLRPC and file_get_contents

2007-08-16 Thread Andreas Schlicker

Hi all,

I'm writing an XML-REC client in PHP, based on the following example:

?php
$request = xmlrpc_encode_request(method, array(1, 2, 3));
$context = stream_context_create(array('http' = array(
'method' = POST,
'header' = Content-Type: text/xml,
'content' = $request
)));
$file = file_get_contents(http://www.example.com/xmlrpc;, false, $context);
$response = xmlrpc_decode($file);
if (xmlrpc_is_fault($response)) {
trigger_error(xmlrpc: $response[faultString] ($response[faultCode]));
} else {
print_r($response);
}
?

If the XMLRPC call takes longer than say 30 seconds, the file_get_contents 
method doesn't returns null, and the script finishes. However, the XMLRPC server 
is not finished with the computation and gets a broken pipe since the client has 
 already closed the connection.


Is there some timeout? Am I doing something wrong?

Kind regards,
Andreas

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] XMLRPC and file_get_contents

2007-08-16 Thread Stut

Andreas Schlicker wrote:

Hi all,

I'm writing an XML-REC client in PHP, based on the following example:

?php
$request = xmlrpc_encode_request(method, array(1, 2, 3));
$context = stream_context_create(array('http' = array(
'method' = POST,
'header' = Content-Type: text/xml,
'content' = $request
)));
$file = file_get_contents(http://www.example.com/xmlrpc;, false, 
$context);

$response = xmlrpc_decode($file);
if (xmlrpc_is_fault($response)) {
trigger_error(xmlrpc: $response[faultString] ($response[faultCode]));
} else {
print_r($response);
}
?

If the XMLRPC call takes longer than say 30 seconds, the 
file_get_contents method doesn't returns null, and the script finishes. 
However, the XMLRPC server is not finished with the computation and gets 
a broken pipe since the client has  already closed the connection.


Is there some timeout? Am I doing something wrong?


There could be several timeouts at work here. First you can set a 
timeout in the context[1]. Second the PHP request time limit[2]. And 
finally your web server (assuming this is running through a web server) 
will have its own timeout - check the documentation for whatever server 
you're using for details.


[1] http://php.net/wrappers.http
[2] http://php.net/set_time_limit

-Stut

--
http://stut.net/

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] XMLRPC and file_get_contents

2007-08-16 Thread Andreas Schlicker

Stut wrote:

Andreas Schlicker wrote:

Hi all,

I'm writing an XML-REC client in PHP, based on the following example:

?php
$request = xmlrpc_encode_request(method, array(1, 2, 3));
$context = stream_context_create(array('http' = array(
'method' = POST,
'header' = Content-Type: text/xml,
'content' = $request
)));
$file = file_get_contents(http://www.example.com/xmlrpc;, false, 
$context);

$response = xmlrpc_decode($file);
if (xmlrpc_is_fault($response)) {
trigger_error(xmlrpc: $response[faultString] 
($response[faultCode]));

} else {
print_r($response);
}
?

If the XMLRPC call takes longer than say 30 seconds, the 
file_get_contents method doesn't returns null, and the script 
finishes. However, the XMLRPC server is not finished with the 
computation and gets a broken pipe since the client has  already 
closed the connection.


Is there some timeout? Am I doing something wrong?


There could be several timeouts at work here. First you can set a 
timeout in the context[1]. Second the PHP request time limit[2]. And 
finally your web server (assuming this is running through a web server) 
will have its own timeout - check the documentation for whatever server 
you're using for details.


[1] http://php.net/wrappers.http
[2] http://php.net/set_time_limit


Hi Stut,

I already used the set_time_limit to set a script running timeout. Looks like 
the problem was the timeout in the context.


Thanks very much for you help.

Andreas

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php