Мне было интересно, как сделать индикатор выполнения, подобный 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 в непрерывном интервале.
Мой вопрос:
Как Google использует индикатор выполнения при входе в Gmail. Получают ли они непрерывный «поток»
данных, как я пробовал в моем первом примере, или отправляют (регулярно) запрос по некоторому URL-адресу (но не через ajax .. через JSONP или что-то в этом роде) и обновить страницу, как вторую?
Могу ли я сделать то же самое с php
, даже если не с php, могу ли я сделать это с помощью javascript и другого языка сценариев на стороне сервера, где поддерживается многопоточность ?