使用Guzzle检查远程文件是否存在的最佳方法是什么?

时间:2014-10-24 20:20:31

标签: php guzzle

我想使用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,我认为我可以让它更漂亮,更具可读性。

我是否正确地想到了这一点?我将如何实现这一目标?

1 个答案:

答案 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;
    }
}