Я сделал веб-приложение, чтобы превратить практически любое растровое изображение в мозаику блоков майнкрафта.
Это работает, но может занять больше минуты для обработки больших изображений. Теперь я хочу показать прогресс при обработке изображений, чтобы дать пользователю представление о том, что происходит.
У меня довольно сложная работа с несколькими вложенными циклами.
например
for($y = 0;$y < $fullrows; $y++){
for($x = 0;$x < $fullcolumns; $x++){
for($yinside=$y*$texty;$yinside < ($y+1)*$texty;$yinside++){
for($xinside=$x*$textx;$xinside < ($x+1)*$textx;$xinside++){
//Calculate color averages for a picture
}
}
for($ytexture = 0; $ytexture < $texty; $ytexture++){
for($xtexture = 0; $xtexture < $textx; $xtexture++){
//Replace picture blocks with according texture
}
}
}
}
}
//More code and loops for uneven edges
Я уже понял, как реализовать переменную прогресса и максимальную переменную. Так что, когда работа заканчивается, р = т. 100 * p / m будет эффективно рассчитывать прогресс в процентах во время работы.
Однако я понятия не имею, как вернуть этот прогресс без опроса и с совместимостью для IE 8-9. (Не опроса и максимальной совместимости)
Я прочитал это: http://stratosprovatopoulos.com/web-development/php/ajax-progress-php-script-without-polling/
Демо в статье не работает .. И я не уверен, как реализовать эти вещи в цикле.
Я понимаю, что он пользуется ob_implicit_flush(true); and ob_end_flush();
Который должен сделать выходной скрипт php на мой клиентский скрипт.
Однако в своих циклах я открываю и закрываю текстурные изображения с помощью php GD. Я также рисую и копирую изображения. Разве эти операции также не будут выведены? Как выбрать то, что я хочу отражать для прогресса? Не повторить?
Автор упомянутой статьи рассказывает о комете, я должен рассмотреть это, чтобы лучше понять?
Мне нужны некоторые объяснения. Благодарю.
Задача ещё не решена.
Других решений пока нет …