Как повторить что-то каждые 3 минуты, находясь в бесконечном цикле?

У меня есть скрипт, который использует while(true) бежать, чтобы он бежал вечно, пока не умрет.

Я хочу, чтобы он мог отправлять сообщения раз в 3 минуты и переподключать каждый раз, как я могу это сделать?

Скрипт для запуска на сервере Jabber с использованием хостинга PHP, так что это сбивает с толку, плюс я не уверен, как заставить его делать это каждые 3 минуты и автоматически переподключаться при отключении, потому что, если я использую sleep() или же usleep() скрипт будет складываться, а сообщение автоответчика не будет запущено.

Так как я могу это сделать? Кто-нибудь может мне помочь?

try {
while(!$this->disconnect()) {
$this->connect();
while(!$this->isDisconnected()) {
$starts = $this->processUntil(array('message', 'session_start'));
foreach($starts as $go) {
$new = $go[1];
switch($go[0]) {
case 'session_start':
break;
case 'message':
$filter = $show="online";
if($new['from'] == $filter) {
$sender = explode('@', $new['from']);
$this->message($new['from'], $body="Auto Respond Message: Sorry $sender[0] Iam Not Here Right Now", $type="chat");
}
$the_time = time();
$interval = 3*60;
while(true) {
if ($the_time + $interval >= time()) {
$this->message($myself, $body="PING !!!", $type="chat");
$the_time = time();
}
$this->presence($status="ONLINE !!!", $show="online");
}
break;
}
}
}
}
} catch(XMPPHP_Exception $e) {
die($e->getMessage());
}

1

Решение

Используйте функцию сна:
http://php.net/manual/en/function.sleep.php

// sleep for 30 seconds
sleep(30);
2

Другие решения

Попробуйте что-то вроде этого:

<?php

while (@ob_end_flush());
try {
while (!$this->disconnect()) {
$this->connect();
while (!$this->isDisconnected()) {
$starts = $this->processUntil(array('message', 'session_start'));
foreach ($starts as $go) {
$new = $go[1];
switch ($go[0]) {
case 'session_start':
break;
case 'message':
$filter = $show = "online";
if ($new['from'] == $filter) {
$sender = explode('@', $new['from']);
$this->message($new['from'], $body = "Auto Respond Message: Sorry $sender[0] Iam Not Here Right Now", $type = "chat");
}
$the_time = time();
$interval = 3 * 60;
while (true) {
if ($the_time + $interval >= time()) {
$this->message($myself, $body = "PING !!!", $type = "chat");
ob_flush();
flush();
$the_time = time();
}
$this->presence($status = "ONLINE !!!", $show = "online");
}
break;
}
}
}
}
} catch (XMPPHP_Exception $e) {
die($e->getMessage());
}
0

Используйте цикл и повторяйте текст во сне;

// sleep for 20 seconds
while( true )
{
echo "text here!";
sleep(20);
}

Это будет повторять текст 3 раза в 1 минуту.

0

вы можете использовать сон ();

echo $statement1;
sleep(180);
echo $statement2;
0
По вопросам рекламы [email protected]