Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Fedya
Сообщения: 174 Зарегистрирован: 21 июл 2012, 19:56
Сообщение
Fedya » 07 фев 2013, 20:51
Здравствуйте, скажите, пожалуйста как отправлять уведомления по 1000 штук
Код: Выделить всё
mysql_connect($db_host, $db_user, $db_password) or die (mysql_error()); mysql_select_db($db_name) or die (mysql_error()); mysql_query("SET NAMES 'utf8'"); $query = "SELECT * FROM ".$table_name.""; $sql = mysql_query($query); $uids_arr = array(); while ($sql_data = mysql_fetch_array($sql)) { $uids_arr[] = $sql_data['uid']; } $userids = implode(',',$uids_arr) // вот тут получается больше 1000 uid через запятую//для теста: echo "Отправляем уведомление на:".$userids; $mesage="трололо"; $rand = rand(); $timestamp = time()+300; $sig = md5("api_id=".$api_id."message=".$mesage."method=secure.sendNotificationrandom=".$rand."timestamp=".$timestamp."uids=".$userids."v=2.0".$api_key); $postvars="api_id=".$api_id."&message=".$mesage."&method=secure.sendNotification&random=".$rand."×tamp=".$timestamp."&uids=".$userids."&v=2.0&sig=".$sig; $chp = curl_init('http://api.vk.com/api.php'); curl_setopt($chp, CURLOPT_HEADER,0); curl_setopt($chp, CURLOPT_RETURNTRANSFER ,1); curl_setopt($chp, CURLOPT_POST, 1); curl_setopt($chp, CURLOPT_POSTFIELDS, $postvars); $res = curl_exec($chp); curl_close($chp); if ($res) {//для тестаecho "<br>Отправилось уведомления до: ".$res;}
__________
Засунул все под один while, сейчас попробую
Fedya
Сообщения: 174 Зарегистрирован: 21 июл 2012, 19:56
Сообщение
Fedya » 07 фев 2013, 21:29
Не, если все в один while, то он делает больше 1000 запросов, и больше половины из них неудачные.
Casperovskii
Сообщения: 429 Зарегистрирован: 22 июн 2012, 17:50
Сообщение
Casperovskii » 07 фев 2013, 23:40
Fedya
Разбивать количество запросов на порции, и пока уведомления не кончатся - делать 1 запрос в секунду (ограничение, 3 запроса, конечно, но...(
Можно просто ставить таймер в конце каждого вызова функции. Как только уведомления кончились - break; и выходим из цикла.
Fedya
Сообщения: 174 Зарегистрирован: 21 июл 2012, 19:56
Сообщение
Fedya » 07 фев 2013, 23:51
Это понятно, но я не понимаю как разбить по 500 uid например.
FOR'ом?
Код: Выделить всё
for( $i =1; $i<=500;$i++){//не, все равно не понятно как разбить...}
Casperovskii
Сообщения: 429 Зарегистрирован: 22 июн 2012, 17:50
Сообщение
Casperovskii » 08 фев 2013, 09:24
Fedya
Отвечаю с телефона но: используй поиск по форуму, тут Alazaur писал загрузку людей по 1000 человек. У тебя идея та же.
Нет, не фором и не вайлом. Твой фор будет отправлять по 1 уведомлению. А нужно за одно обращение к апи отправит 1к уведомлений.
Александр
Создатель сайта
Сообщения: 4574 Зарегистрирован: 27 сен 2009, 16:45
Сообщение
Александр » 16 фев 2013, 17:25
Fedya
В SQL есть LIMIT. На этом этапе и брать нужное количество uid.