2015-04-23 20:26:57
0
I created a class to englobe some HTTP methods in PHP. Here, I have a method for HTTP POST
public function post ($content, $timeout=null)
{
$timeInit = new DateTime();
$this->method = 'POST';
$header = array();
$header['header'] = null;
$header['content'] = is_array($content) ? http_build_query($content) : $content;
$header['method'] = $this->method;
if ($timeout != NULL) {
$header['header'] .= "timeout: $timeout"
}
$header['header'] .= "Content-length: ".strlen($header['content']);
$headerContext = stream_context_create(array('http' => $header));
$contents = file_get_contents($this->url, false, $headerContext);
$this->responseHeader = $http_response_header;
$timeFinal = new DateTime();
$this->time = $timeInit->diff($timeFinal);
return $contents;
}
Basically, I create a $header and use file_get_contents to POST some $content into a URL.
Aparently, all works fine, except for $timeout. It is not considered. Even when I set it to 1, for example.
I don't see anything wrong and I can't get the headers that I'm sending.
Other similar questions here in SO, suggests to use Curl (I was using it, but I'm changing for file_get_contents for other reasons) or fsockopen, but this is not that I need.
Exists some way to set timeout using file_get_contents?