Как я зафейлил новогоднее поздравление

Сел я тут пару недель назад за скрипт. Идея была в том, чтобы поздравить всех друзей в 00:00 01.01.2017. Итак, собственно, скрипт новогоднего поздравления вконтакте:

<?php
	$token = "ТОКЕН"; // Токен можно взять по ссылке после кода
	$user_id = array(111111, 222222, 333333); // ID пользователей, кого будем поздравлять
	$title = "С Новым Годом!"; // Тема сообщения 
	$message = "Это волшебное время, когда исполняется все что загадаешь, пусть твое желание обязательно сбудется! ✨ Я поздравляю тебя с Новым Годом и желаю отлично его провести тебе и твоим близким. Крепкого здоровья, счастья, любви и тепла! Да прибудет благоприятствие во всём!"; // Текст сообщения, для того, чтобы перейти на след.строчку сообщения, используйте \n
	$attachment = "audio20905172_330064534,photo20905172_456240099"; // Аудиозапись и фотография

		for ($i = 0; $i < count($user_id); $i++) {
			$messages = by("messages.send?user_id=".$user_id[$i]."&message=".urlencode($message)."&attachment=".$attachment."&title=".urlencode($title)."&access_token=".$token);
			if($messages) {
				usleep(rand(77777,100000));
			}
		}

	function by($method) {
		$ch = curl_init("https://api.vk.com/method/".$method);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
		curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
		$response = curl_exec($ch);
		curl_close($ch);
		$json = json_decode($response, true);
		return $json["response"];
	}
?>

Получаем Access token. Код кладем на сервер (например) и планируем в Cron задание на отправку. Фейл был в том, что VK останавливает рассылку примерно на 10-м сообщении. Можно в след раз попробовать зарандомить сообщения

$message = array('Текст_поздравления_1', 'Текст_поздравления_2', 'Текст_поздравления_3', 'Текст_поздравления_4'); //набор ответов
$rand = rand(0,3);

и поставить usleep подольше, но успеть при этом отправить всем.
Но первый фейл был в том, что скрипт сработал по Камчатскому времени :D правильно настройте Cron. Еще, чтобы сообщения ушли все таки в 00:00 ровно, можно завернуть цикл в условие

if(date("d.m.Y - H:i") == "01.01.2017 - 00:00")

но опять же, нужно чтобы cron был правильно настроен, и синхронизирован по времени.
Оставлю это все на декабрь, если кто сделает свою версию, или придумает как вставить антигейт, скидывайте :)
С Новым Годом!

Поделиться
Отправить
 43   2017   cron   php   vk api
Популярное