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

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.

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

Сообщение Mihailow_du » 25 сен 2012, 19:35

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

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

Я делаю так:

  1.  
  2.     VK.init(function() {
  3.         VK.api("friends.get", {}, function(dataAllFriends) {
  4.             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  5.  
  6.                     var frCount = dataAllFriends.response.length;
  7.                     var appCount = dataAppUsers.response.length;
  8.  
  9.                     for (i=0;i<appCount;i++) {
  10.  
  11.                     VK.api("getProfiles", {uids:viewer_id, fields:"sex,city,photo_rec,bdate"}, function(data) {
  12.  
  13.                         $.post('save_base_man.php', {
  14.                         "viewer_id": viewer_id,
  15.                         "first_name": data.response[0].first_name,
  16.                         "last_name": data.response[0].last_name,
  17.                         "sex": data.response[0].sex,
  18.                         "town": data.response[0].city,
  19.                         "birthdate": data.response[0].bdate,
  20.                         "ava": data.response[0].photo_rec,
  21.                         },
  22.                             function(data){
  23.                             $('#result').html(data);
  24.                             });
  25.                     })
  26.                     }
  27.             });
  28.         });
  29.     });
  30.  


Но что то все равно не работает... Помогите кто может. Может я просто в корне что то делаю не так??...
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Автор темы
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



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

Сообщение Serge » 25 сен 2012, 22:37

Mihailow_du писал(а):Но что то все равно не работает... Помогите кто может. Может я просто в корне что то делаю не так??...

Ну конкретно в данной ситуации - цикл есть, а перебора нет. [0] -> [i]
  1. VK.api("getProfiles", {uids:viewer_id, fields:"sex,city,photo_rec,bdate"}, function(data) {
  2.  
  3.                         $.post('save_base_man.php', {
  4.                         "viewer_id": viewer_id,
  5.                         "first_name": data.response[i].first_name,
  6.                         "last_name": data.response[i].last_name,
  7.                         "sex": data.response[i].sex,
  8.                         "town": data.response[i].city,
  9.                         "birthdate": data.response[i].bdate,
  10.                         "ava": data.response[i].photo_rec,
  11. },

Но я бы в таком случае из этих элементов (first_name, last_name и т.д.) составил бы строки (имя_первого,имя_второго) и отправил бы на сервер один раз, а там бы уже разобрал и внес в базу. Правда не знаю, уменьшит ли это нагрузку, но подозреваю, что уменьшит.

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

UPD: Если Вы хотите в базу вносить еще и uid пользователя, которому все это добро принадлежит, то "viewer_id":data.response.uid[i]
А еще надо бы auth_key передавать и сравнивать с real_key, иначе со стороны можно в базу чего угодно напихать.
http://sevenlines.com.ua - разработка и продвижение сайтов

За это сообщение автора Serge поблагодарил:
Mihailow_du
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Mihailow_du » 26 сен 2012, 07:37

Еще раз спасибо. Чуть позже попробую.

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


Это связано с тем, что проект рассчитан на 12 разных городов и нашим городам нужно видеть именно свою часть аудитории, сколько и каких людей с Красноярска, сколько и каких с Новокузнецка и т.д. Да бесспорно будь это единый проект, например газета или игра, ничего кроме ID и не нужно было, но в нашей специфики эта информация нам пригодиться или даже понадобиться. Тем более в будущем планируется запуск локальной рекламы (для каждого города свою) и нужно опять же знать аудиторию текущего города... Ну тут опять наверное скажете, что это показывает и статистика приложения, но я не знаю... Я запасливый и лучше ничего не делать с имеющейся инфой, чем захотеть что то сделать, а не из чего будет... :)
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Автор темы
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

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

Сообщение Mihailow_du » 26 сен 2012, 08:15

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

  1.  
  2. <script type="text/javascript" charset="cp1251" >
  3. $(document).ready(function(){
  4.     VK.init(function(){
  5.             VK.api("friends.get", {}, function(dataAllFriends) {
  6.                 VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  7.      
  8.                     var frCount = dataAllFriends.response.length;
  9.                     var appCount = dataAppUsers.response.length;
  10.                            
  11.                     for (i=0;i<appCount;i++) {
  12.                        
  13.                     VK.api("getProfiles", {uids:data.response.uid[i], fields:"sex,city,photo_rec,bdate"}, function(data) {
  14.                             $.post('save_base_man.php', {
  15.                             //"auth_key": data.response.auth_key[i],
  16.                             "viewer_id":data.response.uid[i],
  17.                             "first_name": data.response[i].first_name,
  18.                             "last_name": data.response[i].last_name,
  19.                             "sex": data.response[i].sex,
  20.                             "town": data.response[i].city,
  21.                             "birthdate": data.response[i].bdate,
  22.                             "ava": data.response[i].photo_rec,
  23.                             },
  24.                         }
  25.                     });
  26.                 });
  27.             });
  28.     });
  29. });
  30. </script>
  31.  
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Автор темы
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

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

Сообщение Serge » 26 сен 2012, 19:22

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

  1.  
  2. <script type="text/javascript" charset="cp1251" >
  3.                             "ava": data.response[i].photo_rec,
  4.                             },
  5.                         }
  6.                     });
  7.  
  8. </script>
  9.  

Тут у Вас скобка } лишняя (дальше не смотрел). Проверки таких ошибок - можно делать запустив консоль в браузере (у меня Хром, открывается через F12).
Если не поможет - надо смотреть, что сервер отвечает. Можно в скрипте добавить "echo $param" (заменив $param на нужную переменную) и через Charles смотреть ответ сервера (тема о нем есть на форуме)
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Mihailow_du » 27 сен 2012, 09:22

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

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

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

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

  1.  
  2. <script type="text/javascript" charset="cp1251" >
  3.     VK.init(function() {
  4.  
  5.         VK.api("friends.get", {}, function(dataAllFriends) {
  6.  
  7.             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  8.  
  9.                     var frCount = dataAllFriends.response.length;
  10.  
  11.                     var appCount = dataAppUsers.response.length;
  12.                    
  13.                     var App = dataAppUsers.response;
  14.  
  15.                     var AppCount = App.length;
  16.                     document.getElementById('uids_count').innerHTML = 'Количество установивших друзей: ' + AppCount;
  17.                    
  18.                      if (AppCount>0) {
  19.                    
  20.                         var AppUids = App.join(',');
  21.  
  22.                         VK.api("getProfiles", {uids:AppUids,fields:"sex,city,photo_medium_rec,photo_rec,bdate"}, function(data) {
  23.                             var profilesCount = data.response.length;
  24.                             var profilesStr = '';
  25.                             for (var i=0; i<profilesCount; i++) {
  26.                                 profilesStr += '<img src="' + data.response[i].photo_rec + '" /> ';
  27.                                
  28.                                 $.post('save_base_man.php', {
  29.                                 "viewer_id": data.response[i].uid,
  30.                                 "first_name": data.response[i].first_name,
  31.                                 "last_name": data.response[i].last_name,
  32.                                 "sex": data.response[i].sex,
  33.                                 "town": data.response[i].city.city,
  34.                                 "birthdate": data.response[i].bdate,
  35.                                 "ava": data.response[i].photo_rec,
  36.                                 },
  37.                                 function(data){
  38.                                     $('#result').html(data);
  39.                                 });
  40.  
  41. //                              sleep(3);
  42.  
  43.                                 document.getElementById('friend_on').innerHTML = profilesStr;
  44.                                 }
  45.                         });
  46.                     }
  47.             });
  48.         });
  49.     });
  50. </script>
  51.  
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Автор темы
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

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

Сообщение Serge » 27 сен 2012, 09:55

Не знаю, я задержки в яваскрипте не использую. Рекомендую, опять же, делать в формате
  1.  
  2. var viewer_id_s = "";
  3. var first_name_s = "";
  4. for (var i=0; i<profilesCount; i++) {
  5.    viewer_id_s += data.response[i].uid;
  6.    first_name_s += data.response[i].first_name;
  7. ....
  8.  

И делать один пост запрос на сервер, передавая пачку строк. На сервере разбивать их в массив и записывать в базу (опять же, можно одним запросом написать). Хотя чисто в теории сервер должен выдерживать такое количество запросов подряд.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.

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

Сообщение Mihailow_du » 27 сен 2012, 13:35

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

А может его контакт блокировать??? мол думает наверное, что я типа хакер и хочу всю базу контакта украсть и перекачать к себе?
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Автор темы
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

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

Сообщение Serge » 27 сен 2012, 15:17

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

А может его контакт блокировать??? мол думает наверное, что я типа хакер и хочу всю базу контакта украсть и перекачать к себе?

Вряд ли контакт. Вы обратились к нему, получили информацию и теперь отправка идет от вас к серверу.
Я не знаю, как быть с прерыванием скрипта, яваскрипт вообще не очень дружит с остановкой выполнения кода.
http://sevenlines.com.ua - разработка и продвижение сайтов
Serge
WEB Team
WEB Team
 
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55
Благодарил (а): 2 раз.
Поблагодарили: 65 раз.


Вернуться в Просим готовое и бесплатно



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1