Метод execute на сервере

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Naval
Сообщения: 5
Зарегистрирован: 27 май 2012, 21:16

Метод execute на сервере

Сообщение Naval »

Здравствуйте уважаемые гуру, подскажите пожалуйста, возможно ли использовать метод execute на стороне сервера?

Задача состоит в том, чтобы несколько раз в сутки обновлять информацию о пользователях.
Как сейчас все устроено: есть база MySQL c пользователями, есть скрипт PHP которых несколько раз в сутки (по крону запускается) проходит по всем пользователям и обновляет информацию методом users.get c помощью APIServerPHPClass. Пользователей с каждым днем все больше, поэтому хотел бы перейти на execute.

execute работает во flash приложении и iframe приложении, но никак не хочет работать через APIServerPHPClass и даже через авторизацию (пробовал все три способа), всегда выдается ошибка запроса: то сигнатура неправильная, то метод недоступный, то авторизация пользователя не удалась, то еще какие-то, всех уже не помню (хотя users.get в этих же примерах работал).

И еще может кто знает, в документации по users.get сказано что за один запрос максимум можно узнать информацию о 1000 пользователях, хотя на самом деле получатся только до 430 (в среднем), если людей больше - вылетает ошибка о неправильной сигнатуре (users.get работает через APIServerPHPClass), в чем может быть причина?

Спасибо ;)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Метод execute на сервере

Сообщение Александр »

Видимо execute можно вызывать только на стороне клиента.
Naval писал(а):хотя на самом деле получатся только до 430 (в среднем)
Думаю это из-за длины строки которая получается при перечислении большого количества id. Например, id с 1 до 1000 получатся все, а с 1000000 до 1001000 не все, т.к. строка обрежется и сигнатура не совпадет. APIServerPHPClass использует file_get_contents.

Методом POST данные передаются полностью.

Код: Выделить всё

$uids = '';for ($i=1000000;$i<1001000;$i++) {    $uids .= $i.',';}$uids=substr($uids,0,-1); $curl = curl_init();curl_setopt($curl,CURLOPT_URL, 'https://api.vk.com/method/users.get');curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS, "uids=".$uids);$resp = curl_exec($curl);echo $resp;curl_close($curl);
Naval
Сообщения: 5
Зарегистрирован: 27 май 2012, 21:16

Re: Метод execute на сервере

Сообщение Naval »

Александр, большое спасибо!
Ответить