我想使用Guzzle检查是否存在远程文件。
这是我目前正在检查的一个例子:
/**
* @return boolean
*/
function exists()
{
// By default get_headers uses a GET request to fetch the headers.
// Send a HEAD request instead
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
// Get the file headers
$file_headers = @get_headers($this->file);
// Check file headers for 404
if($file_headers[0] == 'HTTP/1.1 404 Not Found')
return false; // File not available.
return true; // File is available!
}
然而,由于我已经在其他地方使用过Guzzle,我认为我可以让它更漂亮,更具可读性。
我是否正确地想到了这一点?我将如何实现这一目标?
答案 0 :(得分:10)
我确实找到了文档中的部分答案。 Guzzle - Request Methods
结合具有类似功能的gist,检查404状态。
/**
* @return boolean
*/
function exists()
{
$client = new GuzzleHttp\Client();
try {
$client->head($this->file);
return true;
} catch (GuzzleHttp\Exception\ClientException $e) {
return false;
}
}