我正在尝试遍历用户 ID 列表以检查用户的关系状态。这(将循环限制为 20)需要足够长的时间来获得“致命的 PHP 无法在 30 秒内处理错误”。...而且我想重复 20 次以上。
有没有办法发出“批量”请求?向 IG 发送我想要一举检查的所有用户 ID 的列表?
这是我当前的片段:
<?php
$i = 0;
foreach(get_user_meta($user_id, 'followed_users', false) as $followed){
if($i < 20){
//Makes sure it's a real Insta user ID
if(strlen($followed) > 2){
$relationshipInfo = $instagram->getUserRelationship($followed);
$relationship = $relationshipInfo->data->outgoing_status;
if( $relationship == 'none' ){
//BAN THEM
update_user_meta($user_id, 'is_banned', 1);
if(!is_page('banned') && (get_user_meta($user_id, 'is_banned', true) == 1)){
//REDIRECT TO 'BANNED' PAGE
$redirect = get_bloginfo("url").'/banned/';
wp_redirect( $redirect );
exit;
}
} else {
//DON'T BAN
update_user_meta($user_id, 'is_banned', 0);
}
}
}
$i++;
}
?>
我只想注意:我知道我可以存储 $current_user 关注的所有用户的列表,并使用 foreach 和 inarray 检查 $current_user 是否取消关注任何人(因为通过我的网站关注的用户列表 $current_user 存储到数据库),除了我无法获得 $current_user 所遵循的完整用户列表......所以解决这个问题实际上也可以解决我的困境。
编辑:虽然我仍然想知道更快的循环方法,但不知何故,获得(几乎)准确数量的用户 $current_user 似乎已经开始工作......(???)......
对于其他尝试与我一样做某事的人,也许这段代码可以为您指明正确的方向,直到有人回答原件。
$insta_id = get_user_meta($current_user->ID, 'instagram_id', true);
$fObject = $instagram->getUserFollows($insta_id, -1);
$fUsers = $fObject->data;
//generate array of users currently followed
$fArray = array();
foreach ($fUsers as $fUser) {
$fArray[] = $fUser->id;
}
//list of people followed through insta-hashtag
$wasFolloweds = get_user_meta($current_user->ID, 'followed_users', false);
foreach ($wasFolloweds as $wasF) {
//check if they unfollowed
if(strlen($wasF) > 2){
if(!in_array($wasF, $fArray)){
$userinfo = $instagram->getUserRelationship($wasF);
if(!$userinfo->meta->error_type == 'APINotAllowedError'){
//BAN THEM
update_user_meta($user_id, 'is_banned', 1);
if(!is_page('banned') && (get_user_meta($current_user->ID, 'is_banned', true) == 1)){
//REDIRECT TO 'BANNED' PAGE
$redirect = get_bloginfo("url").'/banned/';
wp_redirect( $redirect );
exit;
}
} else {
//DON'T BAN
update_user_meta($user_id, 'is_banned', 0);
}
} else {
//DON'T BAN
update_user_meta($user_id, 'is_banned', 0);
}
}
}