Задать вопрос
@Anickdot

Как в php отложить время выполнения функции?

Пишу бота на php для VK. Задача стоит такая: боту пишут "Привет", он отвечает "Пока", но только через 2 часа.

Вот часть кода, которая отвечает за отправку ответного сообщения, если ему пишут "Привет".

case strstr($message,'Привет') :
	
	 		 $request_params = array( 
	 		 	'message' => "Пока", 
	 		 	'user_id' => $user_id, 
	 		 	'access_token' => $token, 
	 		 	'v' => '5.0' 
	 		 ); 
	 		 $get_params = http_build_query($request_params);

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/messages.send'); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $get_params);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);curl_close($ch); break;


Если все оставить в таком виде, то все прекрасно – бот работает, мгновенно отвечает и жизнь хороша.
Как заставить его делать это через час/два после получения сообщения?

Sleep(10) – работает. (но я так понимаю, что эта функция в любом месте скрипта заставляет его замирать на 10 секунд)
А если его ставить больше, то запросы начинают сыпаться по несколько раз, бот может начать отправлять сообщения по 3-4 раза.

В какую сторону тут думать?
  • Вопрос задан
  • 652 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Думайте в сторону CRON
Ответ написан
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Cron или серверы очередей + воркеры.
Ответ написан
Комментировать
razumkov2015
@razumkov2015
"Программист" https://vk.com/cgs_game
Бд + CRON
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы