Как поместить аргумент в функцию setInterval

24web

Новичок
Возможно вы знаете как этот скрипт можно написать по-другому ибо уже запутался. Второй день сижу - успехов нет.
У меня есть таблица
Где:
id - id юзерa
status - online/1 offline/0
lastvisit - время последнего активного действия пользователя date('U')

Нужно приравнивать время от последнего активного действия до настоящего, и в зависимости от него делать сетинтеваль страницы 500 или 20000 чтобы ослабить нагрузку на сервер
Я делал таким способом
index.php
PHP:
<script type="text/javascript">
                setInterval('$("#setin").load("blocks/updateOnline.php", {id: "<? echo $myid; ?>"});', 1000);
</script>
<div id='setin'><?php $seti=500; echo $seti;?></div>
<script type="text/javascript">
       var seti = "<? echo $seti; ?>";
       var seti = parseInt(seti);
       setInterval('$("#sidebarupdate").load("blocks/updateSidebar.php", {id: "<? echo $myid; ?>"});', seti);
</script>

updateOnline.php


PHP:
<?PHP
    include ("db.php");
    $myid = $_POST['id'];
    $usertime = mysql_query("SELECT lastvisit FROM users WHERE id='$myid'",$db);
    $usertimemyrow = mysql_fetch_array($usertime);
    $lastvisit = $usertimemyrow['lastvisit'];
   
    $nowvisit = date('U');
    $resvisit = $nowvisit - $lastvisit;
   
    if($resvisit <= 180) {$seti=500; echo $seti;}
    elseif($resvisit > 180 && $resvisit <= 300) {$seti=1000; echo $seti;}
    elseif($resvisit > 300 && $resvisit <= 480) {$seti=5000; echo $seti;}
    elseif($resvisit > 480 && $resvisit <= 600) {$seti=10000; echo $seti;}
    else {$seti==20000; echo $seti;}
?>

1.png 1.png
 

Hello

Новичок
Присваивайте setInterval к переменной, к примеру qweasd
В blocks/updateSidebar.php возвращать новое значение seti
Если новый seti отличается от старого seti, то делаем clearInterval(qweasd) и новый setInterval
 

24web

Новичок
Сделал так, алерт работает но сетинтервал всегда 1000
И так пробовал, alert() выводит правильно, а в сетинтервали не работает. Не изменяет его:

PHP:
<script type="text/javascript">

    setInterval(function() {
        $.get('blocks/updateOnline.php', {id: "<? echo $myid; ?>"}, function (data)
        {
            if(data == 500) {
            alert("Дание обновляютса кажду секунду.");
            var seti = setInterval(function() {$("#sidebarupdate").load("blocks/updateSidebar.php", {id: "<? echo $myid; ?>"});},  1000);
            }
            else if(data == 5000) {
            clearInterval(seti);
            alert("Дание обновляютса каждие 5 сек.");
            setInterval(function() {$("#sidebarupdate").load("blocks/updateSidebar.php", {id: "<? echo $myid; ?>"});},  5000);
            }
            else {alert("Другие значения");}
        });
    },10000);    

</script>
 

24web

Новичок
Hello, ище такой вопрос?
Можно ли как-то оптимизировать этот код?
PHP:
myid = "<? echo $myid; ?>"
var seti = 1000,
    myInvervalFunction,
    myInterval,
    init,
    dataUrl = 'blocks/updateOnline.php';

init = function() {
    myInterval = setInterval(myInvervalFunction, 60000);
};
unit = function() {
    myUnterval = setInterval(myUnvervalFunction, seti);
};

myInvervalFunction = function(){
        console.log('tick after '+seti+' ms');
        $.get(dataUrl, {id: myid}, function(data) {
            if (seti !== data) {
                seti = data;
                clearInterval(myInterval);
                clearInterval(myUnterval);
                init()
                unit()
            }
        });
    };
myUnvervalFunction = function(){
        console.log('tick after '+seti+' ms');
        $("#sidebarupdate").load("blocks/updateSidebar.php", {id: myid});}

init();
unit();
 
Сверху