作者guardlan (亚修)
看板PHP
标题Re: [请益] 噗浪机器人的问题...
时间Sun Jan 30 02:39:00 2011
※ 引述《roga (任性)》之铭言:
: 先检查自己到底用量多少,有没有一天用超过上限制 ^^
: 检查方法: https://www.plurk.com/API/Stats?api_key=你的 KEY
: 然後几个解决方向给您参考
: 1. 写信给噗浪要求加入白名单,解除一天 50,000 次的限制,但这个有困难,
: 除非好友人数够多 orz
: 2. 检查自己的程式写法,除了 5 秒 call 一次应该还有别的方法。
: 举例而言:当河道上的噗不够多时,会一直取回重复的噗,当河道上噗太多时,
: 还是会来不及取回所有的噗。所以最好的方式是记下上次取回的「最後更新时间」
: ,然後下次再以「最後更新时间」为基准取回新的噗。
: (但这也有些问题..不过一般情况是够用了)
: 当然你可以基於这个方法使用 RealTime API 。
: 3. 以你的例子,5 秒更新一次,一天只会戳 17,280 次,剩下的 quota 都可以
: 拿来回应,离要爆一天 50,000 次还有段距离。所以还是回到上一点,先检查一下
: 程式是否有不必要的呼叫,不必要的登入,不必要的其他动作..etc
: 一般来讲,在 4X0,000 万好友的情况下,大概一天会戳 300,000 次上下,
: 我还记得以前好友 10,000 人左右,一天应该也戳不到 50,000 次 ^^
: http://gallery.roga.tw/var/albums/storage/Noname-1914390244.jpg
在此感谢 roga 大的回应
原来噗浪 API 有状态可以查...
我也查了一下我的 API 次数...
一天差不多 20000 次...
http://guardlan.myweb.hinet.net/plurk_api_status.jpg
原来噗浪有 RealTime API 我刚刚有研究了一下
发现 php-plurk-api 里面有 realtime_get_user_channel 跟 realtime_get_commet_channel 这两个 function 可用
他说先用 realtime_get_user_channel 找出 comet_server 之後再使用 realtime_get_commet_channel 来取得资料
我已经有取得 comet_server 的位址跟 offset 值,不过我呼叫 realtime_get_commet_channel 却什麽东西也没有
以下是我写的程式
================================================================
前略...
$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 取得资料吧!?
这样的话跟我想打 API 次数应该减差不了多少~?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.137.156
1F:→ weiyucsie:根据API页面的说明,没资料的话是50秒才会回传 01/30 21:20
2F:→ weiyucsie:然後sleep 50秒好像是server端自己做的... 01/30 21:26
4F:→ weiyucsie:realtime_get_user_channel回传的字眼似乎没有offset? 01/30 21:38
5F:→ weiyucsie:(根据该文件的说明) 01/30 21:38
因为我一开始就抓不到任何值,看API的说明他说50秒後才会回传值给我...?
所以我才在我的程式里面下 sleep 50秒去等 API
50秒後我去取结果还是一样没值,所以有点纳闷...
另外这样应该也算打一次API吧...
※ 编辑: guardlan 来自: 122.116.137.156 (01/30 23:36)