Twitter начальной загрузки — Включение индикатора выполнения пользовательского интерфейса jquery для длительного выполнения процесса PHP

Я работаю над менеджером журналов чата — я хотел больше контролировать архив журналов чатов Thunderbird. Есть функция синхронизации, которая в основном анализирует файлы журналов и загружает сообщения в базу данных, архивирует журналы и сохраняет их в папке архива.

Этот процесс занимает много времени, и я хотел бы отобразить индикатор выполнения. Я использую как jQueryUI, так и Bootstrap — поэтому решение, которое будет использовать любой из них, будет приемлемым.

Я пытался реализовать оба из них безрезультатно до сих пор. Индикатор выполнения не отображается, и я не могу сказать, увеличивается ли он или нет.

Я вставил код, который у меня есть. Буду признателен за любую помощь … У меня есть базовые знания CSS, и мои знания javascript в лучшем случае ограничены.

HTML Head

<script>
function UpdatePBar(x){
$( "#progressbar" ).progressbar( "value", x );}
</script>

Тело HTML

<div id="progressbar"></div>

Синхронизировать процесс PHP

if(count($this->Contacts) > 0)
{
//GET CONTACTS ALIASES
$result = $this->GetContacts_aliases($folderPath);
if($result) {
echo '<script>UpdatePBar(10)</script>';
flush();
//SYNCH CONTACTS
$result = $this->synch_Contacts();
echo '<script>UpdatePBar(20)</script>';
flush();
if ($result) {
//SYNCH MESSAGES
$result = $this->synch_Messages($folderPath);
echo '<script>UpdatePBar(50)</script>';
flush();
if ($result) {
//SYNCHING SUCCESSFULLY COMPLETED
$log = "Synching of Messages Complete without errors. <br><br>";
$this->log = $this->log . $log;

//UPDATE LAST SYNCHED
$result = $this->UpdateLastSynched();
echo '<script>UpdatePBar(70)</script>';
flush();
if (!$result) {
//Update lastSynched failed
$log = "Updating lastSynched failed! <br><br>";
$this->log .= $log;
} else {
$log = "Updated Last Synched date stamp without errors <br><br>";
$this->log .= $log;

//ARCHIVE LOGS
$result = $this->ArchiveLogs($folderPath);
echo '<script>UpdatePBar(100)</script>';
flush();
if ($result) {
$log = "Archiving of log files successful!<br><br>";
$this->log .= $log;
} else {
$log = "Archiving of log files unsuccessful.<br><br>";
$this->log .= $log;
}

}
} else {
...

Спасибо за ваше время

0

Решение

Я думаю, что вы должны сделать это через рекурсивные вызовы AJAX.

создать файл на php, который возвращает процент;

Example: getPercentage.php
<?
//do your stuff

echo $PERCENTAGE;
?>

Then on jquery:

<script>
readPHP();

function readPHP () {
var file="getPercentage.php";

$.ajax({
url: file,
cache: false,
success: function (data , status ) {
percentage=data;
if (percentage < 100)
{
$("#progressbar").progressbar({
value:percentage
})
setTimeout(readPHP(),1000);
}
else
{
$("#progressbar").progressbar({
value:percentage
})

}
}
})
}
</script>
0

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

Других решений пока нет …

По вопросам рекламы [email protected]