При подходе, в котором всё обрабатывается на сервере, получается очень много итераций, внутри итераций и я боюсь всё будет работать или медленное или вообще не будет. Если я выгрузил всё в массивы и по ним делаю сверку, то очень много получается проходов, это не съест всю память? Раньше я делал запросы и вытаскивал конкретные записи, а теперь получается следующее:
При добавлении подписки
На входе у нас имя пользователя и имя города
Мы получаем список городов, пользователей, зависимостей
Проверяем есть ли такая подписка: проходим по массиву городов, что бы получить его ID зависимости. Проходим по массиву пользователей, что бы получить его ID зависимости. Проходим по массиву зависимостей, сравнивая есть ли такая подписка.
Если подписки нет, проходим по массиву городов, что бы получить его ID зависимости
Проходим по массиву пользователей, что бы получить его ID зависимости
Добавляем запись в таблицу rel
Я так подозреваю что повторяющиеся проходы, нужны перенести в конструктор класса, что бы не повторять вычисления.
При отправке информации о городе
На входе ничего нет
Получаем таблицу зависимостей
Проходим по массиву городов получая значение имён, проходим по таблице пользователей, получая значения имен
Получаем массив информации с городами
Проходим по зависимостям, за каждую итерацию нужно перебрать все города, сравнив соотвествует ли данный город итерации. Если да, то получить лог уже отправленных постов, пройтись по нему и проверить не был ли уже отправлен этот пост.
И далее повторяем предыдущий шаг для каждой строчки rel
Я почти уверен что накосячил, но не могу понять правильный путь решения это задачи. Предыдущее решение не выдержало нагрузки, хочется в этот раз сделать всё правильно.
Я реализовал такой подход и у меня пара вопросов появилась, некоторые моменты не совсем понятны:
1) Входящие данные от пользователей является его имя, а не id и имя города, а не его id. В представленной схеме для получения списка городов теперь добавился ещё один запрос.
Первый запрос: По имени пользователя мы получаем id его зависимости
Второй запрос: По имени зависимости мы узнаём id зависимость города
Третий запрос: По id зависимости города мы узнаём имя города
Вероятно всего я просто не понимаю как с этим работать правильно, в чём преимущество такого подхода?
Я смотрел в интернете примеры, импортировал их в phpMyAdmin, там таблица rel представлена в виде ссылок на соответствующие строки в других таблицах, я думаю в этом и есть смысл...
Сережа Ахен, Спасибо! Я нашёл более простой способ, нативное приложение VK для рассылок (точнее сказать сторонняя разработка, но подключаемая через нативный интерфейс управления группами) имеет своё API - https://vk.com/page-58810575_54614990. Там можно передавать ID списка подписавшихся и message + attach, всё остальное приложение сделает за вас, и позаботиться о лимитах и правильном выполнении.
Сережа Ахен, А если человек подписался на рассылку в Приложении собщества, а диалог не открывал?
У меня есть приложение по подписке, мне бы как-то рассылать через API тем, кто согласились на рассылку в этом приложении + тем, кто подпишеться в будущем через него.
Ну или слать вообще всем подписчикам сообщества, но мне кажется так можно словить бан.
Я хотел бы задать пару вопросов:
Вы пробовали отправлять сообщение вообще все подписчикам? Что произойдёт бан или если не будут нажимать спам, не дадут бан?
Вы имеете ввиду сохранять ID в БД?
Про второй способ тоже хотел узнать, а если диалоги были с тем, кто не разрешил писать сообщения, либо разрешил, но не начинал его писать...
ImIeee, А что бы получить этот URL, надо пост запрос в al_audio.php с параметрами mp3 сделать, верно? В топике написано, что надо предварительно зарегестрироваться, это и есть получить mixid, как в данном примере(https://github.com/biganfa/vk-auth)? Если нет, может быть подскажите ссылку на библиотеку, чем авторизироваться с сервера..
ImIeee, У меня не как не получалось с сервера подключится к мобилньой версии. Во всяком случае, я эту проблему решил. А ваш способ с mp3 актуален на данный момент?