0

ツイートが存在するかどうかを確認する方法が必要です。のようなツイートへのリンクがありhttps://twitter.com/darknille/status/355651101657280512ます。私は(ページの本文を取得せずにHEADリクエストだけで)チェックするための高速な方法が必要なので、このようなことを試しました

function if_curl_exists($url)
{   

    $resURL = curl_init(); 
    curl_setopt($resURL, CURLOPT_URL, $url); 
    curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1); 
    curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback'); 
    curl_setopt($resURL, CURLOPT_FAILONERROR, 1); 
    $x = curl_exec ($resURL); 
    //var_dump($x);
    echo $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE); 
    curl_close ($resURL); 
    if ($intReturnCode != 200 && $intReturnCode != 302 && $intReturnCode != 304) { 
        return false;
    }
    else return true;

}   

またはこのように

function if_curl_exists_1($url) 
{
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_NOBODY, true);//head request
    $result = curl_exec($curl);

    $ret = false;

    if ($result !== false) {
        //if request was ok, check response code
        echo $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  

        if ($statusCode == 200) {
            $ret = true;   
        }
    }

    curl_close($curl);
    return $ret;
}

しかし、両方とも で null を返しますcurl_exec()。http ステータス コードをチェックするものは何もありません。

GET statuses/show/:id もう 1 つの方法は、 https: //dev.twitter.com/docs/api/1.1/get/statuses/show/%3Aid のような Twitter API を使用することですが、前述のように、ツイートが存在しない場合は特別な戻り値はありません。こちらhttps://dev.twitter.com/discussions/8802

チェックする最速の方法についてアドバイスが必要です。私はphpでやっています。

4

2 に答える 2

0

おそらく返品転送フラグを設定する必要があります

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

コードが 30x ステータスとして返される場合は、Follow Location フラグも追加する必要があります。

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
于 2013-07-12T14:58:27.900 に答える