- индикатор выполнения возможен с php и javascript с использованием ajax

Мне было интересно, как сделать индикатор выполнения, подобный Gmail.

Я пробовал

<script src="jquery.js"></script>
<script>
$(function (){
    $.ajax({
        url: 'index.php',
        success: function(data) {
            $('#bar').html(data);
        }
    });
})
</script>
<div id="bar"></div>

И на ] index.php

[РЕДАКТИРОВАТЬ] : с помощью sleep () я просто хотел имитировать непрерывный поток вывода, такой как многопоточные программы, который не поддерживается в php .

<?php

for($i=0; $i<=10; $i++)
{
    sleep(1);
    echo "$i";
}

кажется, что вывод выводится сразу, поэтому я сразу получаю результат 012345678910 .

также я пробовал

setInterval(function (){
        $.ajax({
            url: 'index.php',
            success: function(data) {
                $('#bar').html(data);
            }
        });
    }, 1000);

Вместо этого у меня возникли проблемы с поддержанием значения 'прогресс' , поэтому я сделал

<?php

session_start();

if(isset($_SESSION['value'])){
    if($_SESSION['value'] >= 10)
    {
        unset($_SESSION['value']);
    }
    else
    {
        $_SESSION['value']++;
    }
}
else
{
    $_SESSION['value'] = 0;
}

echo $_SESSION['value'];

как часть моего php. Но кажется, что я вызываю функцию ajax в непрерывном интервале.

Мой вопрос:

  1. Как Google использует индикатор выполнения при входе в Gmail. Получают ли они непрерывный «поток» данных, как я пробовал в моем первом примере, или отправляют (регулярно) запрос по некоторому URL-адресу (но не через ajax .. через JSONP или что-то в этом роде) и обновить страницу, как вторую?

  2. Могу ли я сделать то же самое с php , даже если не с php, могу ли я сделать это с помощью javascript и другого языка сценариев на стороне сервера, где поддерживается многопоточность ?

8
задан hasExams 30 April 2012 в 09:31
поделиться