作者weiyucsie (选择那刻 才算开始)
看板PHP
标题Re: [请益] 噗浪机器人的问题...
时间Tue Feb 1 00:05:33 2011
※ 引述《guardlan (亚修)》之铭言:
: ================================================================
: 前略...
: $plurk = new plurk_api();
: $plurk->login($api_key, $username, $password);
: $result = $plurk->realtime_get_user_channel();
: $comet_server = preg_replace('/\&offset=\d+/', '', $result->comet_server);
: $offset = preg_match('/\&offset=(\d+)/', $result->comet_server, $matches) ? $matches[1] : NULL;
: sleep(50);
: $result = $plurk->realtime_get_commet_channel($comet_server, $offset);
: var_dump($result);
: =================================================================
: 是写错吗~还请各位先进指教
: 另外我还有个问题想请教...
: 即使使用 RealTime API 也是需要每固定秒数去打 RealTime API 取得资料吧!?
50秒连一次,我想应该不会被挡吧~
只是另外还有polling API,不过不同API之间的合作... 没研究过
我会提到polling API,主要是因为我怕太常出现新plurk或response了
不过似乎可以藉由自己sleep来解决,来控制最短request时间
$start_time = time();
$result = realtime_get_commet_channel($comet_server, $offset);
$diff_time = 5 - (time() - $start_time);
if ($diff_time > 0) {
sleep($diff_time);
}
: 这样的话跟我想打 API 次数应该减差不了多少~?
我自己实际测试一下,然後观察一下
http://code.google.com/p/php-plurk-api/
的原始码...
有注意到几点:
1.constant.php里面的login,update,register没有特别用https
建议改成https
2.plurk_api->plurk预设使用POST
不过其实也还好,似乎plurk api大部分没特别写要用POST或GET
3.实际上,realtime_get_user_channel回传的comet_server的字串
包含&offset=0
不过也还好... 反正plurk看的懂就好
假设&offset=0&offset=3应该也不会炸(我猜的)
4.
plurk_api->realtime_get_commet_channel
还是使用POST request
然後根据API的说明: you do GET requests to this URL to get new data
我不知道这有没有差...
5.这点大概是关键吧...
因为最久会等50秒,不知道curl预设会怎麽做,
这边可能需要在realtime_get_commet_channel(plurk_api.php)里面
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
+ curl_setopt($ch, CURLOPT_TIMEOUT, 80);
curl_setopt($ch, CURLOPT_USERAGENT, PLURK_AGENT);
加上CURLOPT_TIMEOUT那一行
(我不知道会多久啦,设定80秒只是为了保险,
根据php curl文件,设定为0是无限等待
Use 0 to wait indefinitely.)
不过查了一下,似乎有人说预设不会timeout,
所以如果还是无效的话,就再看看吧
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.231.172.67