Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47

Функция setInterval() не ускоряет счёт ниже 1000ms

20.06.2020, 18:54. Показов 645. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть JS код в HTML странице
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  function funcSuccessgetBallance (error){
      var result = JSON.parse(error);
      var balance = parseFloat(result).toFixed(8); 
      $('#bls').html(balance);
  }
 
  function getBallance (){
      setInterval(
          function(){
          $.ajax ({
              url: '/ajax/balance',
              type: 'POST',
              data: {type: 'ajax'},
              dataType: 'html',
              success: funcSuccessgetBallance
          })
      }, 1000)
  }
getBallance ();
проблема в том что когда я ставлю 500 или 100 миллисекунд, таймер не ускоряется, а если ставлю выше 1000, 3000 к примеру, то всё работает и отсчёт начинает идти каждые 3 секунды, что может быть может???

это скрипт на PHP и нужно чтобы счёт таймера шёл быстрее, может где какая-то проверка стоит, подскажите примерно хотя бы в чём может быть дело?

есть кусок кода из контроллера:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    public static function updateBalances ($user_data)
    {
 
        $db = Db::getConnection();
 
        $time = microtime();
 
        $seconds_earn = $time - $user_data['lastupdate'];
 
        $speed = $user_data['speed'] / 60 / 60;
 
        $money_earn = $seconds_earn * $speed;
 
        $sql = 'UPDATE users_002 SET money_k = money_k + :money_earn WHERE id = :usid';
 
        $result = $db->prepare($sql);
 
        $result->bindParam(':money_earn', $money_earn, PDO::PARAM_STR);
 
        $result->bindParam(':usid', $user_data['id'], PDO::PARAM_INT);
 
        $result->execute();
 
    }
но я пробовал менять тут по всякому, кое что менялось, но нужного эффекта не достиг...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.06.2020, 18:54
Ответы с готовыми решениями:

Анимация на JS на сайт. Функция setInterval
На сайт потребовалось установить анимацию: 1)идут часы 3 полных прохода анимации (watches.gif время анимации 57.5 сек,), 2) вылазит...

Функция с использованием setInterval выводит данные через разные промежутки времени.
у меня на сервере скрипт который возвращает время (сколько мин сек прошло от заданного времени) function get_data(){ ...

функция,вопрос на счет возвращаемого значния
у меня вопрос(название уже говорит про какой) если скажем у меня функция возвращает целыое число то функцию пишу с INT,а если у меня и...

13
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
21.06.2020, 01:03
а как вы поняли что интервал не ставится меньше 1000ms? если console.log аякса - то это уж дело самого аякса и апача

Добавлено через 2 минуты
и вы не забывайте что аякс асинхронен по умолчанию. и если вы в быстром порядке запускаете их батарею, там может первым прийти любой из них


сокеты есть для этого
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
21.06.2020, 16:38  [ТС]


https://youtu.be/1fzaq68j4dQ


посмотрите видео я там показал подробнее что происходит в консоли браузера,

может в самом коде что-то, но я пробовал по всякому - пока не удачно
0
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
21.06.2020, 17:12
ну это ответ не в формате JSON

Добавлено через 1 минуту
вот это включите. и при аякс запросе в консоли будет урл запроса. жмите на него и там можно посмотреть что приходит

Добавлено через 8 секунд


Добавлено через 39 секунд


Добавлено через 26 секунд
как фото вставить на этом форуме?
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
21.06.2020, 17:14  [ТС]
я не в курсе, видео ели загрузил с ошибкой и то фрейм...

Цитата Сообщение от nikolya223 Посмотреть сообщение
ну это ответ не в формате JSON
а как мне сделать лучше? получается приходит строка, и потом она пишется как JSON.parse и из-за этого шибка?
0
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
21.06.2020, 17:14
0
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
21.06.2020, 17:15
JSON.parse - это разбор JSON строки - скорее всего что то ещё приходит помимо него.

посмотрите там где я написал. по поводу того что интервал не работает - он работает. это аякс запрос занимает время
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
21.06.2020, 17:25
Зачем же так насиловать базу данных ?
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
21.06.2020, 17:26  [ТС]
Цитата Сообщение от nikolya223 Посмотреть сообщение
вот это включите. и при аякс запросе в консоли будет урл запроса. жмите на него и там можно посмотреть что приходит





я так понимаю процессом управляет jquery , иначе бы setInterval работал как надо на 500ms и на 100ms, видимо там только 1000ms можно, быстрее он не может?
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
21.06.2020, 17:28  [ТС]
Цитата Сообщение от D_Vik Посмотреть сообщение
Зачем же так насиловать базу данных ?
скрипт не я делал, пытаюсь разобраться
мне тоже этот подход показался странным, хоть я ине очень разбираюсь в программирование, каждую секунду подгружать данные, когда явно можно это сделать по другому
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
21.06.2020, 17:31
Да и потом, если это к примеру игровой ресурс, такой подход будет очень уязвим, потому как ajax запрос можно отправить в обход ресурса, прямо на сервер.
0
123 / 98 / 15
Регистрация: 02.02.2014
Сообщений: 346
21.06.2020, 17:33
Дак на саму ссылку запроса нажмите
или во вкладке network ищите его
я так понимаю процессом управляет jquery , иначе бы setInterval работал как надо на 500ms и на 100ms, видимо там только 1000ms можно, быстрее он не может?
ну я же написал он и так работает как надо. проблема в том что соединение с апачем, работа бэкэнда тоже занимает время.
0
 Аватар для D_Vik
368 / 234 / 68
Регистрация: 19.07.2016
Сообщений: 833
21.06.2020, 17:38
Вам наверное нужно писать формулу расчета притока ресурса именно на php. К примеру как нибудь так:


Пользователь пришел, поставили отметку microtime в базе, js скрипту сообщили с какой скоростью он должен считать ресурс. Пользователь обновил страницу, посчитали разницу от старой точки microtime до новой, и на основе разницы, подсчитали сколько пользователь накопил ресурса. Сбросили все в базу, обновили точку microtime.
0
3 / 3 / 0
Регистрация: 17.09.2019
Сообщений: 47
21.06.2020, 17:42  [ТС]
Цитата Сообщение от nikolya223 Посмотреть сообщение
Дак на саму ссылку запроса нажмите
или во вкладке network ищите его
нажал ,попал в jquery.min.js:4
и там направило сюда кода минифицирован и ничего не понятно

JavaScript
1
f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
Добавлено через 2 минуты
Цитата Сообщение от D_Vik Посмотреть сообщение
Вам наверное нужно писать формулу расчета притока ресурса именно на php. К примеру как нибудь так:
Пользователь пришел, поставили отметку microtime в базе, js скрипту сообщили с какой скоростью он должен считать ресурс. Пользователь обновил страницу, посчитали разницу от старой точки microtime до новой, и на основе разницы, подсчитали сколько пользователь накопил ресурса. Сбросили все в базу, обновили точку microtime.
примерное понимание есть, хорошо вы сказали как в общем плане сделать..буду думать, на PHP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2020, 17:42
Помогаю со студенческими работами здесь

PictureBox почему-то ускоряет движение
Написал проект, в котором при нажатии клавиши 'w' создается и двигается PictureBox по форме. Движение реализовано с помощью таймера. При...

Ускоряет ли многопоточность выполнение программы?
Разъясните, пожалуйста, ускоряет ли многопоточность выполнение программы? Т.е. если мне надо прорисовать две таблицы и каждую я буду...

На сколько хештаблица ускоряет поиск элемента?
Словарь в Collections.Generic использует хеш значения. Как посчитать на сколько вырастает скорость поиска?

Почему многопоточность не ускоряет выполнение кода
В массиве string содержится строки длиной в сотни знаков, каждая строка обрабатывается отдельным потоком, каждый поток запускает новый...

Ускоряет ли выполнение программы запоминание длины массива?
Верно ли я полагаю, что чем длиннее массив, тем дольше работает функция Length()? Будет ли следующий код оптимизацией в некотором смысле? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru