У кого нить есть? Отправка оповищений через CRON

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.
Ответить
madvk
Сообщения: 49
Зарегистрирован: 23 сен 2013, 15:08

У кого нить есть? Отправка оповищений через CRON

Сообщение madvk »

У кого нить есть? Отправка оповещений через CRON примерно 10 утра 15-00 чтоб оно само отправляло?
stepan05
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение stepan05 »

тоже нужно:)
madvk
Сообщения: 49
Зарегистрирован: 23 сен 2013, 15:08

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение madvk »

А что приколько было сообщение написал на крон кинул все)
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение Serge »

Есть отправка оповещений на форуме, возьмите скрипт и поставьте в крон, в чем проблема?
madvk
Сообщения: 49
Зарегистрирован: 23 сен 2013, 15:08

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение madvk »

да пробивал не работает он через него((( если такой скрипт на форуме кинь его ссылку0
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение Serge »

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

<?phpfunction 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);} $api_secret = "some_api_secret";$app_id = "your_app_id"; require('VkApi.class.php');$api = new VkApiNode($app_id, $api_secret); $db_host = "db_host";$db_name = "db_name";   $db_user = "db_user";   $db_password = "db_password-"; mysql_connect($db_host, $db_user, $db_password);mysql_select_db($db_name); $message = "ТЕКСТ УВЕДОМЛЕНИЯ ДЛЯ ОТПРАВКИ"; $query = 'SELECT `uid` FROM `users`';$res = mysql_query($query);$count = mysql_num_rows($res); if($count > 100){    for ($i = 0; $i < ceil($count/100); $i++)    {        $uids = '';        $sql = 'SELECT `uid` FROM `users` ORDER BY `uid` 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);        $query = $api -> sendNotification($uids, $message);        get_url($query);    }} else{    $uids = '';    while($row = mysql_fetch_assoc($res))    {        $uids = $uids.$row[uid].',';    }    $uids = substr($uids, 0, -1);    $uids = split(',', $uids);    $query = $api -> sendNotification($uids, $message);    get_url($query);} ?>
VkApi.class.php:

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

<?/** * Класс обертка, для VkApi. Здесь описываются методы для запросов. * * @package VkApi * @author  Michael Elovskih <wronglink@gmail.com> * used by flapps.ru */class VkApiNode{    /**     * Конструктор класса. Принимает обязательные $api_id (Id приложения) и     * $secret (секретный код приложения).      *      * @param   integer $api_id     Id приложения.     * @param   string  $secret     Секретный код приложения.     * @param   string  $format     Формат ответа (XML или JSON). По умолчанию, 'XML'.     * @param   string  $version    Версия API. По умолчанию, '2.0'.     * @param   string  $server_url Адрес сервера API. По умолчанию 'http://api.vkontakte.ru/api.php?'.     * @param   mixed   $timestamp  Timestamp сервера. Если не задано - берется системное.     * @param   mixed   $random     Случайное значение. Если не задано - задается через rand().     */    public function __construct ($api_id,                                    $secret,                                     $format = 'XML',                                    $version = '2.0',                                    $server_url = 'http://api.vkontakte.ru/api.php?',                                    $timestamp = false,                                    $random = false)    {        $this->api_id = $api_id;        //$this->method = $method;        $this->secret = $secret;        $this->format = $format;        $this->version = $version;        $this->server_url = $server_url;        $this->timestamp = $timestamp ? $timestamp : time();        $this->random = $random ? $random : rand();    }        /**     * Отправляет уведомления пользователям. Для того, чтобы пользователь получил уведомление     * необходимо, чтобы у него было разрешено получение уведомлений в настройках.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.sendNotification         *      * @param   mixed   $uids       Id пользователей (массив до 100 чисел или число).     * @param   string  $message    Текст сообщения.     *     * @return  string  Строка запроса.         */    public function sendNotification ($uids, $message)    {        $api = new VkApi($this->api_id,                            'secure.sendNotification',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uids', join(',', $uids));        $api->addParameter('message', $message);        return $api->getQuery();    }        /**     * Сохраняет строку статуса приложения для последующего вывода в     * общем списке приложений на странице пользоваетеля.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.saveAppStatus     *      * @param   integer $uid    Id пользователя.     * @param   string  $status Текст статуса. Строка до 32 символов.     *     * @return  string  Строка запроса.         */    public function saveAppStatus ($uid, $status)    {        $api = new VkApi($this->api_id,                            'secure.saveAppStatus',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uid', $uid);        $api->addParameter('status', $status);        return $api->getQuery();    }     /**     * Возвращает платежный баланс приложения.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.getAppBalance     *     * @return  string  Строка запроса.         */    public function getAppBalance ()    {        $api = new VkApi($this->api_id,                            'secure.getAppBalance',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        return $api->getQuery();    }     /**     * Возвращает баланс пользователя на счету приложения.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.getBalance     *      * @param   integer $uid    Id пользователя.     *     * @return  string  Строка запроса.         */    public function getBalance ($uid)    {        $api = new VkApi($this->api_id,                            'secure.getBalance',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uid', $uid);        return $api->getQuery();    }     /**     * Переводит голоса со счета приложения на счет пользователя.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.addVotes     *      * @param   integer $uid    Id пользователя.     * @param   integer $votes  Количество голосов (в 100 долях).     *     * @return  string  Строка запроса.         */    public function addVotes ($uid, $votes)    {        $api = new VkApi($this->api_id,                            'secure.addVotes',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uid', $uid);        $api->addParameter('votes', $votes);        return $api->getQuery();    }     /**     * Списывает голоса со счета пользователя на счет приложения.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.withdrawVotes     *      * @param   integer $uid    Id пользователя.     * @param   integer $votes  Количество голосов (в 100 долях).     *     * @return  string  Строка запроса.         */    public function withdrawVotes ($uid, $votes)    {        $api = new VkApi($this->api_id,                            'secure.withdrawVotes',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uid', $uid);        $api->addParameter('votes', $votes);        return $api->getQuery();    }     /**     * Переводит голоса со счета одного пользователя на счет другого в рамках приложения.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.transferVotes     *      * @param   integer $uid_from   Id пользователя, от которого переводятся голоса.     * @param   integer $uid_to     Id пользователя, которому переводятся голоса.     * @param   integer $votes      Количество голосов (в 100 долях).     *      * @return  string  Строка запроса.         */    public function transferVotes ($uid_from, $uid_to, $votes)    {        $api = new VkApi($this->api_id,                            'secure.transferVotes',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        $api->addParameter('uid_from', $uid_from);        $api->addParameter('uid_to', $uid_to);        $api->addParameter('votes', $votes);        return $api->getQuery();    }     /**     * Возвращает историю транзакций внутри приложения.     * @see http://vkontakte.ru/pages.php?o=-1&p=secure.getTransactionsHistory     *      * @param   integer $type   Тип возвращаемых транзакций.      * 0 – все транзакции, 1 – транзакции типа "пользователь → приложение",     * 2 – транзакции типа "приложение → пользователь", 3 – транзакции типа "пользователь → пользователь"      * @param   integer $uid_from   Фильтр по Id пользователя, с баланса которого снимались голоса.     * @param   integer $uid_to     Фильтр по Id пользователя, на баланс которого начислялись голоса.     * @param   integer $date_from  Фильтр по дате начала. Задается в виде UNIX-time.     * @param   integer $date_to    фильтр по дате конца. Задается в виде UNIX-time.     * @param   integer $limit      Количество возвращаемых записей. По умолчанию 1000.     *     * @return  string  Строка запроса.         */    public function getTransactionsHistory ($type = 0, $uid_from = null, $uid_to = null, $date_from = null, $date_to = null, $limit = 1000)    {        $api = new VkApi($this->api_id,                            'secure.getTransactionsHistory',                            $this->secret,                            $this->format,                            $this->version,                            $this->server_url,                            $this->timestamp,                            $this->random);        if($type)            $api->addParameter('type', $type);        if($uid_from)            $api->addParameter('uid_from', $uid_from);        if($uid_to)            $api->addParameter('uid_to', $uid_to);        if($date_from)            $api->addParameter('date_from', $date_from);        if($date_to)            $api->addParameter('date_to', $date_to);        if($limit)            $api->addParameter('limit', $limit);        return $api->getQuery();    }    } /** * Класс VkApi. Для каждого запроса создается экземпляр данного класса, * задаются метод API и параметры запроса и вызывается getQuery метод.   * * @package VkApi * @author  Michael Elovskih <wronglink@gmail.com> */class VkApi{       /**     * Конструктор класса.     *      * @param   integer $api_id     Id приложения.     * @param   string  $method     Название метода API.     * @param   string  $secret     Секретный код приложения.     * @param   string  $format     Формат ответа (XML или JSON).     * @param   string  $version    Версия API.     * @param   string  $server_url Адрес сервера API.     * @param   mixed   $timestamp  Timestamp сервера.     * @param   mixed   $random     Случайное значение.     */    public function __construct ($api_id,                                    $method,                                    $secret,                                     $format,                                    $version,                                    $server_url,                                    $timestamp,                                    $random)    {        $this->api_id = $api_id;        $this->method = $method;        $this->secret = $secret;        $this->format = $format;        $this->version = $version;        $this->server_url = $server_url;        $this->timestamp = $timestamp;        $this->random = $random;          $this->parameters = array();         $this->parameters[] = array('name' => 'api_id', 'value' => $this->api_id);        $this->parameters[] = array('name' => 'method', 'value' => $this->method);        $this->parameters[] = array('name' => 'format', 'value' => $this->format);        $this->parameters[] = array('name' => 'v', 'value' => $this->version);        $this->parameters[] = array('name' => 'timestamp', 'value' => $this->timestamp);        $this->parameters[] = array('name' => 'random', 'value' => $this->random);    }     /**     * __toString метод класса.     *     * @return  string  Строка запроса.         */    public function __toString ()    {        $this->parameters[] = array('name' => 'sig', 'value' => $this->getSig());         foreach($this->parameters as $p)             $query[] = $p['name'].'='.rawurlencode($p['value']);          return $this->server_url . join('&', $query);    }     /**     * Добавляет параметр запроса.     *      * @param   string  $p_name     Название параметра     * @param   string  $p_value    Значение параметра     */    public function addParameter ($p_name, $p_value)    {        $this->parameters[] = array('name' => $p_name, 'value' => $p_value);    }        /**     * Возвращает строку запроса.     *     * @return  string  Строка запроса.         */    public function getQuery ()    {        return $this->__toString();    }        /**     * Считает Sig-подпись приложения.     *      * @return  string  Sig-подпись приложения.     */    // flapps.ru for     private function getSig ()    {        sort($this->parameters);                foreach($this->parameters as $p)            $sigStr .= join('=',$p);        return md5($sigStr . $this->secret);    }} ?>
stepan05
Сообщения: 146
Зарегистрирован: 15 авг 2012, 09:43

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение stepan05 »

Спасибо Serge! Кстати, могут ли заблокировать приложения если я буду часто отсылать уведломления? Например 1 раз в 5 часов, это нормально??
madvk
Сообщения: 49
Зарегистрирован: 23 сен 2013, 15:08

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение madvk »

Лимит кажись 3 штуки на юзера в день или сколько?
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: У кого нить есть? Отправка оповищений через CRON

Сообщение Serge »

3 в день, раз в час
Ответить