Как выполнить execute VK API PHP?

Привет мастера. Подскажите пожалуйста, как пользоваться запросом execute на php? Я искал, но не нашел пример того, как его нужно правильно отправлять.
Буду очень благодарен за подсказку)
  • Вопрос задан
  • 2207 просмотров
Пригласить эксперта
Ответы на вопрос 1
Например так:
class DevClass {
	public $group_id = 30666517;
	public $membersGroups = array();
	public $access_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
	public function devMethod(){
		$opts = ["group_id"=>$this->group_id, "access_token"=>$this->access_token, "fields"=>"photo_50,members_count", "v"=>"5.80"];
		$answer = $this->vk->getMethod("groups.getById", $opts, true);
		//$members_count = $answer->response[0]->members_count;
		$members_count = 45000;
		$members_groups = 0;	//изначально в массиве 0 объектов
		//выполняем цикл пока полученное кол-во участников меньше общего кол-ва участников в группе
		while($members_count > $members_groups){
			usleep(300000);	//задержка на 0.3 сек.
			$answer = $this->getMembers25k($this->group_id, $members_count);
			if($answer->response){
				$new = explode(",",$answer->response);
				$this->membersGroups = array_merge($this->membersGroups, $new);
				//второй раз определяем переменную, уже с новым массивом данных
				$members_groups = count($this->membersGroups);
			}
			else{
				echo "NO RESPONSE";
                print_r($answer);
				die();
			}
		}
		print_r($this->membersGroups);
		die();
	}

	public function getMembers25k($group_id, $members_count) {
		$members_groups = count($this->membersGroups);
		$offset = 1000;
		$code =  'var members = API.groups.getMembers({"group_id": '.$this->group_id.', "v": "5.80", "sort": "id_asc", "count": '.$offset.', "offset": '.$members_groups.'}).items;'
			.'var offset = '.$offset.';'
			.'while (offset < 25000 && (offset + '.$members_groups.') < '.$members_count.')'
			.'{members = members + "," + API.groups.getMembers({"group_id": '.$this->group_id.', "v": "5.80", "sort": "id_asc", "count": '.$offset.', "offset": ('.$members_groups.' + offset)}).items;offset = offset + '.$offset.';};'
			.'return members;';

		$answer = $this->vk->getMethod("execute", ["code" => urlencode($code), "v"=>"5.80", "access_token" => $this->access_token], true);
        return $answer;
	}
}

$dev = new DevClass();
$dev->devMethod();

но надо понимать что тут у меня уже сформирован access_token другим классом как и запросы к методам ($this->vk->getMethod), я лишь хотел показать логику.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы