Отправка уведомления по 1000

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

Отправка уведомления по 1000

Сообщение Fedya »

Здравствуйте, скажите, пожалуйста как отправлять уведомления по 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."&timestamp=".$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

Re: Отправка уведомления по 1000

Сообщение Fedya »

Не, если все в один while, то он делает больше 1000 запросов, и больше половины из них неудачные.
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Отправка уведомления по 1000

Сообщение Casperovskii »

Fedya
Разбивать количество запросов на порции, и пока уведомления не кончатся - делать 1 запрос в секунду (ограничение, 3 запроса, конечно, но...(
Можно просто ставить таймер в конце каждого вызова функции. Как только уведомления кончились - break; и выходим из цикла.
Fedya
Сообщения: 174
Зарегистрирован: 21 июл 2012, 19:56

Re: Отправка уведомления по 1000

Сообщение Fedya »

Это понятно, но я не понимаю как разбить по 500 uid например.
FOR'ом?

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

for( $i =1; $i<=500;$i++){//не, все равно не понятно как разбить...}
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: Отправка уведомления по 1000

Сообщение Casperovskii »

Fedya
Отвечаю с телефона но: используй поиск по форуму, тут Alazaur писал загрузку людей по 1000 человек. У тебя идея та же.

Нет, не фором и не вайлом. Твой фор будет отправлять по 1 уведомлению. А нужно за одно обращение к апи отправит 1к уведомлений.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Отправка уведомления по 1000

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

Fedya
В SQL есть LIMIT. На этом этапе и брать нужное количество uid.

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

SELECT * FROM ".$table_name." LIMIT 0, 100
Ответить