我已经设置了一个cron作业来跟踪谁喜欢我在Instagram上的特定媒体。
我正在从实时订阅中保存媒体ID,然后查询api以获得谁喜欢它并在每1小时后保存用户ID,工作正常但未优化,因为它需要太多的服务器请求。
任何更好的解决方案。下面是我的代码片段。
<?php
while($row = mysqli_fetch_assoc($r)){
$media_id=$row['media_id'];
$url='https://api.instagram.com/v1/media/'.$media_id.'/likes?access_token='.$access.'';
$inst_stream = callInstagram($url);
$results = json_decode($inst_stream, true);
foreach($results['data'] as $item){
$insta_id=$item['id'];
// insert & update code
}}
?>
答案 0 :(得分:0)
我认为您希望保持在某些API速率限制范围内。
似乎Instagram不允许传递多个media_id,因此每个媒体ID都会遇到一个请求。
如果要跟踪的项目数量(media_id)超过每小时限制,那么我建议按小时批量拆分请求。
实施例。如果每小时费率限制为5000个请求,并且您需要跟踪10000个图像,
然后分两批分割您的媒体ID和
你将使用一些参数运行两个脚本或两次相同的脚本。
Instagram提供了一些有关限速配额的信息,
见https://instagram.com/developer/limits/
有关全局费率限制的信息包含在每个通话响应的HTTP标头中,这使您的应用可以确定其与这些费率限制相关的当前状态。
这完全取决于您需要跟踪的项目数量,
但您所能做的就是解决每个访问令牌每小时5000个请求的速率限制。
您仍会按媒体ID发送一个请求。