Доброго времени суток.
Есть несколько тяжелых скриптов на php, которые через PDO дергают данные из БД и выполняются от 10 до 30 секунд. Хотелось бы как-нибудь анимировать этот процесс визуально, чтобы пользователю отображалась индикация выполнения запроса и загрузки страницы. Нашел пару решений на JS, но проблема в том, что они выполняют индикацию именно загрузки страницы, т.е. при открытии страницы сначала на протяжении выполнения запроса к базе браузер думает, а потом непосредственно перед показом уже готовой страницы происходит анимация ее загрузки. Есть ли решения, которые анимируют именно процесс выполнения скрипта, а не загрузку и построения страницы.
1. Jenstel - 09 Февраля, 2016 - 10:20:18 - перейти к сообщению
2. Viper - 09 Февраля, 2016 - 12:31:49 - перейти к сообщению
По нормальному никак. Через костыли можно, но не нужно.
3. Jenstel - 09 Февраля, 2016 - 13:02:37 - перейти к сообщению
Viper пишет:
По нормальному никак. Через костыли можно, но не нужно.
Пусть будет костыль, проект не особо глобальный, но пользователей приличное количество и каждый день в нем работают, хотелось бы как-то добавить прогресс выполнения их операций, а то кто-то не дождавшись начинает обновлять страницы или вообще закрывает ее, думая что она зависла. А скоро нужно будет добавить еще несколько отчетов, а там время выполнения и до минуты может доходить
4. bear9 - 25 Февраля, 2016 - 05:55:46 - перейти к сообщению
Jenstel пишет:
Нашел пару решений на JS, но проблема в том, что они выполняют индикацию именно загрузки страницы, т.е. при открытии страницы сначала на протяжении выполнения запроса к базе браузер думает, а потом непосредственно перед показом уже готовой страницы происходит анимация ее загрузки
ну это зависит от того как код написан....
На мой взгляд, наиболее оптимальным в таких задачах, является обращение к "тяжелому" скрипту не при открытии страницы, а через ajax предварительно сообщив пользователю о том, что "идет загрузка данных, ждите" и добавив к ней еще какую-нибудь крутящуюся гифку. Это 100% работает.
5. Ismail - 27 Июня, 2016 - 00:12:07 - перейти к сообщению
Можно вызывать функцию, которая пытается аяксом загрузить данные. Пока она их грузит, выводится, например, гифка:
CODE (javascript):
скопировать код в буфер обмена
скопировать код в буфер обмена
- function loading() {
- $.ajax({
- type: "GET",
- url: "путь_до_обработчика.php",
- beforeSend: function() {
- $('#id_DOM_элемента').html('<img src="путь_до_гифки/loadinfo.gif">');
- },
- success: function(html){
- console.log(html); // вывести например что загрузка окончена
- },
- error: function(e) {
- console.log(e); // ошибка при загрузке
- }
- });
- }