Перепись друзей в приложении.

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.
Ответить
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Перепись друзей в приложении.

Сообщение Mihailow_du »

Ситуация:
писать приложение я хоть и очень, очень медленно, но учусь и вот недавно сделал запись пользователя запустившего приложение в базу MySql
НО, записать в базу я пока только смог 486 человек, однако приложение уже установлено у 5.480 человек... Помогите решить это:

Задача:
Я запустив приложение попадаю в базу, но при этом знаю, что у 58 моих друзей тоже стоит это приложение и мне нужно их перебрав записать их данные в базу.
Что бы в минимальные сроки все мои 5.480 (ну или как можно больше из них) пользователей приложения попали в базу через их друзей периодически заходящих в приложение...

Я делаю так:

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

     VK.init(function() {        VK.api("friends.get", {}, function(dataAllFriends) {            VK.api("friends.getAppUsers", {}, function(dataAppUsers) {                     var frCount = dataAllFriends.response.length;                    var appCount = dataAppUsers.response.length;                     for (i=0;i<appCount;i++) {                     VK.api("getProfiles", {uids:viewer_id, fields:"sex,city,photo_rec,bdate"}, function(data) {                         $.post('save_base_man.php', {                        "viewer_id": viewer_id,                        "first_name": data.response[0].first_name,                        "last_name": data.response[0].last_name,                        "sex": data.response[0].sex,                        "town": data.response[0].city,                        "birthdate": data.response[0].bdate,                        "ava": data.response[0].photo_rec,                        },                            function(data){                            $('#result').html(data);                            });                    });                     }            });        });    }); 
Но что то все равно не работает... Помогите кто может. Может я просто в корне что то делаю не так??...
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Перепись друзей в приложении.

Сообщение Serge »

Mihailow_du писал(а):Но что то все равно не работает... Помогите кто может. Может я просто в корне что то делаю не так??...
Ну конкретно в данной ситуации - цикл есть, а перебора нет. [0] ->

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

VK.api("getProfiles", {uids:viewer_id, fields:"sex,city,photo_rec,bdate"}, function(data) {                         $.post('save_base_man.php', {                        "viewer_id": viewer_id,                        "first_name": data.response[i].first_name,                        "last_name": data.response[i].last_name,                        "sex": data.response[i].sex,                        "town": data.response[i].city,                        "birthdate": data.response[i].bdate,                        "ava": data.response[i].photo_rec,},
Но я бы в таком случае из этих элементов (first_name, last_name и т.д.) составил бы строки (имя_первого,имя_второго) и отправил бы на сервер один раз, а там бы уже разобрал и внес в базу. Правда не знаю, уменьшит ли это нагрузку, но подозреваю, что уменьшит.

P.S. А вообще странно - зачем хранить эти данные у себя? Ведь в любой момент можно взять из ВК.

UPD: Если Вы хотите в базу вносить еще и uid пользователя, которому все это добро принадлежит, то "viewer_id":data.response.uid
А еще надо бы auth_key передавать и сравнивать с real_key, иначе со стороны можно в базу чего угодно напихать.
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Re: Перепись друзей в приложении.

Сообщение Mihailow_du »

Еще раз спасибо. Чуть позже попробую.
P.S. А вообще странно - зачем хранить эти данные у себя? Ведь в любой момент можно взять из ВК.
Это связано с тем, что проект рассчитан на 12 разных городов и нашим городам нужно видеть именно свою часть аудитории, сколько и каких людей с Красноярска, сколько и каких с Новокузнецка и т.д. Да бесспорно будь это единый проект, например газета или игра, ничего кроме ID и не нужно было, но в нашей специфики эта информация нам пригодиться или даже понадобиться. Тем более в будущем планируется запуск локальной рекламы (для каждого города свою) и нужно опять же знать аудиторию текущего города... Ну тут опять наверное скажете, что это показывает и статистика приложения, но я не знаю... Я запасливый и лучше ничего не делать с имеющейся инфой, чем захотеть что то сделать, а не из чего будет... :)
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Re: Перепись друзей в приложении.

Сообщение Mihailow_du »

Что то ничего не сохраняет ни с ключом ни без него...

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

 <script type="text/javascript" charset="cp1251" >$(document).ready(function(){    VK.init(function(){            VK.api("friends.get", {}, function(dataAllFriends) {                VK.api("friends.getAppUsers", {}, function(dataAppUsers) {                         var frCount = dataAllFriends.response.length;                    var appCount = dataAppUsers.response.length;                                                for (i=0;i<appCount;i++) {                                            VK.api("getProfiles", {uids:data.response.uid[i], fields:"sex,city,photo_rec,bdate"}, function(data) {                            $.post('save_base_man.php', {                            //"auth_key": data.response.auth_key[i],                            "viewer_id":data.response.uid[i],                            "first_name": data.response[i].first_name,                            "last_name": data.response[i].last_name,                            "sex": data.response[i].sex,                            "town": data.response[i].city,                            "birthdate": data.response[i].bdate,                            "ava": data.response[i].photo_rec,                            },                        }                    });                });            });    });});</script> 
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Перепись друзей в приложении.

Сообщение Serge »

Mihailow_du писал(а):Что то ничего не сохраняет ни с ключом ни без него...

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

 <script type="text/javascript" charset="cp1251" >                            "ava": data.response[i].photo_rec,                            },                        }                    }); </script> 
Тут у Вас скобка } лишняя (дальше не смотрел). Проверки таких ошибок - можно делать запустив консоль в браузере (у меня Хром, открывается через F12).
Если не поможет - надо смотреть, что сервер отвечает. Можно в скрипте добавить "echo $param" (заменив $param на нужную переменную) и через Charles смотреть ответ сервера (тема о нем есть на форуме)
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Re: Перепись друзей в приложении.

Сообщение Mihailow_du »

Разобрался - у меня действительно большая проблема с синтаксисом команд - я программер *.exe программ, а РНР и Яву только начал потихоньку изучать..

Но у меня проблема теперь в другом...

Определил друзей в приложении (сейчас их у меня 60) и начинаю циклом их перебирать и записывать в базу, но скрипт стопорится записав 5-20 человек - больше не вывозит. Подумал сервер не тянет скорость обращений, поставил задержку в 3сек сразу после очередной записи, а потом и на 10сек исправлял и он вообще перестал работать. Задержку убираю и опять не более 18-20 человек сохраняет и опять СТОП...

Может поймешь в чем "косяк":

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

 <script type="text/javascript" charset="cp1251" >    VK.init(function() {         VK.api("friends.get", {}, function(dataAllFriends) {             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {                     var frCount = dataAllFriends.response.length;                     var appCount = dataAppUsers.response.length;                                       var App = dataAppUsers.response;                     var AppCount = App.length;                    document.getElementById('uids_count').innerHTML = 'Количество установивших друзей: ' + AppCount;                                        if (AppCount>0) {                                            var AppUids = App.join(',');                         VK.api("getProfiles", {uids:AppUids,fields:"sex,city,photo_medium_rec,photo_rec,bdate"}, function(data) {                            var profilesCount = data.response.length;                            var profilesStr = '';                            for (var i=0; i<profilesCount; i++) {                                profilesStr += '<img src="' + data.response[i].photo_rec + '" /> ';                                                                $.post('save_base_man.php', {                                "viewer_id": data.response[i].uid,                                "first_name": data.response[i].first_name,                                "last_name": data.response[i].last_name,                                "sex": data.response[i].sex,                                "town": data.response[i].city.city,                                "birthdate": data.response[i].bdate,                                "ava": data.response[i].photo_rec,                                },                                function(data){                                    $('#result').html(data);                                }); //                              sleep(3);                                 document.getElementById('friend_on').innerHTML = profilesStr;                                }                        });                    }            });        });    });</script> 
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Перепись друзей в приложении.

Сообщение Serge »

Не знаю, я задержки в яваскрипте не использую. Рекомендую, опять же, делать в формате

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

 var viewer_id_s = "";var first_name_s = "";for (var i=0; i<profilesCount; i++) {   viewer_id_s += data.response[i].uid;   first_name_s += data.response[i].first_name;.... 
И делать один пост запрос на сервер, передавая пачку строк. На сервере разбивать их в массив и записывать в базу (опять же, можно одним запросом написать). Хотя чисто в теории сервер должен выдерживать такое количество запросов подряд.
Аватара пользователя
Mihailow_du
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26

Re: Перепись друзей в приложении.

Сообщение Mihailow_du »

не понимаю почему это должно облегчить процесс, но даже если и так то как мне быть с прерыванием скрипта?...

А может его контакт блокировать??? мол думает наверное, что я типа хакер и хочу всю базу контакта украсть и перекачать к себе?
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Перепись друзей в приложении.

Сообщение Serge »

Mihailow_du писал(а):не понимаю почему это должно облегчить процесс, но даже если и так то как мне быть с прерыванием скрипта?...

А может его контакт блокировать??? мол думает наверное, что я типа хакер и хочу всю базу контакта украсть и перекачать к себе?
Вряд ли контакт. Вы обратились к нему, получили информацию и теперь отправка идет от вас к серверу.
Я не знаю, как быть с прерыванием скрипта, яваскрипт вообще не очень дружит с остановкой выполнения кода.
Ответить