Скрипт отправки уведомлений (цикл по 100 уведомлений)
Добавлено: 31 дек 2010, 16:11
Скрипт отправки уведомлений (цикл по 100 уведомлений)
Скрипт отправляет уведомления пользователям приложения.
ID пользователей скрипт берет из базы, организованной по принципу как в этом уроке http://flapps.ru/forum/topic165.html
Для работы скрипта необходим хостинг с поддержкой curl.
settings.php
send.php
Файл VkApi.class.php находится в архиве с исходником.
Исходник http://flapps.ru/example/sendNotification.rar
Код в исходнике немного отличается и могут появляться проблемы при отправке уведомлений большому количеству пользователей. Смотрите исправленный код в этом сообщении выше.
Инструкция
Серверная часть
1. В файле settings.php измените:
$db_host - обычно можно оставить "localhost"
$db_user - имя пользователя БД
$db_password - пароль БД
$db_name - имя БД
$table_name - имя таблицы (если вы изменили его при создании таблицы в первом пункте, измените его и здесь)
$app_id - ID приложения
$api_secret - защищенный ключ (с вкладки "Платежи")
2. Загрузите файлы в любой каталог на сервере.
3. Для отправки уведомлений введите в браузере путь к файлу send.php на вашем сервере. Введите текст уведомления и нажмите "Отправить". Процесс отправки будет отображаться на странице.
Рекомендую сразу сменить имя этого файла, чтобы посторонние люди не могли отправлять уведомления.
Скрипт отправляет уведомления пользователям приложения.
ID пользователей скрипт берет из базы, организованной по принципу как в этом уроке http://flapps.ru/forum/topic165.html
Для работы скрипта необходим хостинг с поддержкой curl.
settings.php
Код: Выделить всё
<?php// данные доступа к базе данных$db_host="localhost";$db_user="user";$db_password="pass";$db_name = "base";$table_name = "stat"; // данные приложения$app_id = '743131';$api_secret = 'qwertyuioasdfghjklzxcvbnm'; /* http://flapps.ru/forum/ - форум о создании приложений */?>
Код: Выделить всё
<?php/* http://flapps.ru/forum/ - форум о создании приложений */ set_time_limit(0); if (isset($_POST['send'])) { require('VkApi.class.php');include('settings.php'); mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());mysql_select_db($db_name) or die (mysql_error()); function get_url($query) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $query); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10); return curl_exec($ch); curl_close($ch);} $message = $_POST['mess'];$sql = 'SELECT `uid` FROM `'.$table_name.'`';$res = mysql_query($sql);$all = mysql_num_rows($res); echo 'Всего пользователей: '.$all.'<br />';echo 'Сообщение: '.$message.'<br /><br />'; $all_send = 0; if ($all > 100) { $kolvo = ceil($all/100); for ($i=0; $i<$kolvo; $i++) { $uids = ''; $sql = 'SELECT `uid` FROM `'.$table_name.'` ORDER BY `id` LIMIT '.($i*100).','.(100); $res = mysql_query($sql); while($row = mysql_fetch_assoc($res)) { $uids = $uids.$row[uid].','; } $uids = substr($uids, 0, -1); // отправка // $uids = split(',',$uids); $api = new VkApiNode($app_id, $api_secret); $query = $api->sendNotification($uids, $message); get_url($query); $all_send = $all_send + substr_count($uids, ',') + 1; echo 'Идёт отправка... Отправлено: '.($all_send*100).'/'.$all.'<br />'; flush(); sleep(1); } echo '<br />Отправка завершена. Отправлено: '.($all_send*100).'/'.$all.'<br />';}else { $uids = ''; while($row = mysql_fetch_assoc($res)) { $uids = $uids.$row[uid].','; } $uids = substr($uids, 0, -1); // отправка $uids = split(',',$uids); $api = new VkApiNode($app_id, $api_secret); $query = $api->sendNotification($uids, $message); get_url($query); $all_send = $all_send + substr_count($uids, ',') + 1; echo 'Отправлено: '.($all_send*100).'/'.$all.'<br />';} }else {?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Отправка уведомлений</title></head> <body><h1>Отправка уведомлений</h1><form method="post">Текст уведомления (максимум 1024 символа):<br /><textarea name="mess" cols="50" rows="5"></textarea><br /><br /><button name="send" type="submit">Отправить</button></form></body></html><? } ?>
Исходник http://flapps.ru/example/sendNotification.rar
Код в исходнике немного отличается и могут появляться проблемы при отправке уведомлений большому количеству пользователей. Смотрите исправленный код в этом сообщении выше.
Инструкция
Серверная часть
1. В файле settings.php измените:
$db_host - обычно можно оставить "localhost"
$db_user - имя пользователя БД
$db_password - пароль БД
$db_name - имя БД
$table_name - имя таблицы (если вы изменили его при создании таблицы в первом пункте, измените его и здесь)
$app_id - ID приложения
$api_secret - защищенный ключ (с вкладки "Платежи")
2. Загрузите файлы в любой каталог на сервере.
3. Для отправки уведомлений введите в браузере путь к файлу send.php на вашем сервере. Введите текст уведомления и нажмите "Отправить". Процесс отправки будет отображаться на странице.
Рекомендую сразу сменить имя этого файла, чтобы посторонние люди не могли отправлять уведомления.