拉我試圖通過PHP從Twitter拉一些數據。我使用的是tmhOAuth插件,可以在這裏找到。 https://github.com/themattharris/tmhOAuth/捲曲的錯誤,同時從Twitter
我寫了一個基於關示例文件「streaming.php」,這也可以在上述GitHub的頁面上找到我的代碼。這裏是我的代碼:
require 'tmhOAuth.php';
$tmhOAuth = new tmhOAuth(array(
'consumer_key' => 'xxxhiddenxxx',
'consumer_secret' => 'xxxhiddenxxx',
'user_token' => 'xxxhiddenxxx',
'user_secret' => 'xxxhiddenxxx'
));
$method = 'http://stream.twitter.com/1/statuses/filter.json';
$params = array(
'follow' => '1307392917',
'count' => '5'
);
$tmhOAuth->streaming_request('POST', $method, $params, 'my_streaming_callback');
$tmhOAuth->pr($tmhOAuth);
那不是打印出任何我想拉的Twitter數據,並只顯示了PR()命令寫入調試信息。
在試圖調試爲什麼我沒有收到任何數據時,我進入並添加了一行到tmhOAuth.php,以便我可以看到cURL給出了什麼錯誤。我用
echo curl_error($C);
是捲曲outputed錯誤這樣做是:
轉移以優異的讀取數據剩餘
我已經做了該錯誤一些研究關門,但我找不到任何有用的東西。有報道說,我找到有關內容長度有兩件事情,但是當我挖成的代碼,我看到tmhOAuth的作者已經解決了這些問題(和評論了他的修復並沒有幫助)。
任何幫助?
更新1下面是使用curl_getinfo響應信息採集:
//Removed - an updated version is below
更新2由於下面我意識到Twitter的是給我用傳輸編碼數據的評論:分塊。我把這一行放入tmhOAuth.php中以強制執行分塊數據:
curl_setopt($c, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
這有點奏效。我不再得到任何捲曲的錯誤,但我WRITEFUNCTION回調仍然沒有得到所謂的 - 所以我從來沒有得到任何實際的數據。這裏是我的捲曲對象的輸出再次:
[response] => Array
(
[content-length] => 0
[headers] => Array
(
[content_type] => text/html; charset=iso-8859-1
[server] => Jetty(6.1.25)
)
[code] => 416
[response] => 1
[info] => Array
(
[url] => http://stream.twitter.com/1/statuses/filter.json
[content_type] => text/html; charset=iso-8859-1
[http_code] => 416
[header_size] => 116
[request_size] => 532
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.118553
[namelookup_time] => 0.043927
[connect_time] => 0.070477
[pretransfer_time] => 0.07049
[size_upload] => 25
[size_download] => 0
[speed_download] => 0
[speed_upload] => 210
[download_content_length] => -1
[upload_content_length] => -1
[starttransfer_time] => 0.118384
[redirect_time] => 0
[request_header] => POST /1/statuses/filter.json HTTP/1.0
User-Agent: themattharris' HTTP Client
Host: stream.twitter.com
Accept: */*
Authorization: OAuth oauth_consumer_key="xxxhiddenxxx", oauth_nonce="xxxhidden", oauth_signature="xxxhidden", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1308226585", oauth_token="xxxhiddenxxx", oauth_version="1.0"
Content-Length: 25
Content-Type: application/x-www-form-urlencoded
)
)
)
更新3:夫婦的事情,到目前爲止我已經想通了......我從POST請求刪除「計數」的參數,現在的頁面看起來永遠佔有。我想這意味着它只是下載噸數據和噸數據,所以我暫停了一些流式回調函數,設置爲5次循環後殺死頁面。
我這樣做,並讓它坐很長一段時間。大約5分鐘後,頁面完成加載,並向我展示了我收集的數據。它看起來像我已經得到每次跑通過時間沒有數據 - 僅行字符的結尾。所以,對於我下載的每一條數據都需要一分鐘的時間,即使如此,顯示的唯一數據也是行結束字符。奇怪的?這是一個Twitter的問題或捲曲問題?
您得到的響應頭是否使用Content-Length,還是使用分塊的Transfer-Encoding?這可能提供一個提示。 – ribram 2011-06-15 20:43:54
不知道如何檢查,所以我剛剛發佈了所有我能找到的回覆信息。 – jwegner 2011-06-15 21:30:28
它看起來像它是分塊的(請參閱更新頂部附近的content-length和transfer_encoding)。我看到了一個有問題的服務器分塊回覆的例子會導致這個問題,所以這可能是一個問題。您需要網絡跟蹤或curl數據包調試轉儲以嘗試並確認它。這只是一個猜測,我會等待,看看你是否有任何其他想法,然後再走這條道路。 – ribram 2011-06-15 22:18:46