Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 43 Ответов
  • 1688 Просмотров
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Вопрос о setInterval ()
« : 13.02.2016, 13:48:21 »
Написал на php код который обращаеться к базе данных. Php файл запускается с помощью setInterval(function() {$('#myClass').load("new.php");}, 5000); . Этот скрипт будет запускаться на Joomle в материалах с доступом на 3 человека. Вопрос могут ли произойти сбои или зависания из за  3 постоянных (5000 млс ) обращения к серверу ? и еще как можно отключить setInterval() если человек перешел на другую страницу...

Заранее спасибо за помощь ! (я чайник если что то  ;D ;D ;D)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Вопрос о setInterval ()
« Ответ #1 : 13.02.2016, 15:25:21 »
очень размытый вопрос. одно дело, если у вас new.php выполняется 1/100000 секунды, и совсем другое дело, если он выполняется скажем 10 секунд.
в целом, судя по написанному, подход скорее всего выбран неверный.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #2 : 13.02.2016, 16:27:11 »
php выбирает столбцы из базы данных и печатает. Интервал будет примерно где то 30 секунд или 1 минута.
будет печататься у 3 их людей .

как отключать  setInterval  при переходе на другую страницу и после возвращения   включать?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Вопрос о setInterval ()
« Ответ #3 : 13.02.2016, 16:56:44 »
вы имеете в виду "при переходе на другую страницу" - это не собственно переход, а просто переключение между вкладками?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #4 : 13.02.2016, 17:06:27 »
да да
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #5 : 13.02.2016, 17:07:54 »
если он смотрит этот материал сетинтервал работал, если он переключился на другой материал чтоб сетинтервал не работал   
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #6 : 13.02.2016, 17:14:50 »
Его нельзя поставить на паузу - можно только выключить при событии blur и включить опять при событии focus. Для чего это нужно? Похоже на г-код.
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #7 : 13.02.2016, 17:42:21 »
пускай  остановиться и заного включиться. как написать код?
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #8 : 13.02.2016, 17:48:30 »
Код
var interval = setInterval(...)
Код
$(window).on('blur', function(){
    clearInterval(interval)
})
Код
$(window).on('focus', function(){
    interval = setInterval(...)
})
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Re: Вопрос о setInterval ()
« Ответ #9 : 13.02.2016, 17:54:19 »
Этот скрипт будет запускаться на Joomle в материалах с доступом на 3 человека. Вопрос могут ли произойти сбои или зависания из за  3 постоянных (5000 млс ) обращения к серверу ? и еще как можно отключить setInterval() если человек перешел на другую страницу...
Никогда так не делайте.
Вообще никогда...
Даже если очень хочется.

Используйте сокеты или лонг-поллинг. К тому же постоянные запросы к БД будут грузить базу, еще хуже то, что PHP будет хавать память. Можно конечно взять сервак и тд. Но сам подход не очень.
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Вопрос о setInterval ()
« Ответ #10 : 13.02.2016, 18:03:15 »
Большинство AJAX чатов так работает. Это не круто конечно, но сервер/БД не умрет если его каждые 5 секунд будут запрашивать, иначе что это за сервер такой?
« Последнее редактирование: 13.02.2016, 18:12:57 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Re: Вопрос о setInterval ()
« Ответ #11 : 13.02.2016, 18:12:32 »
Большинство AJAX чатов так работает. Это не круто конечно, но сервер/БД не умрет если его каждые 5 секунд будут запрашивать
То что большинство так работает это не показатель - это раз. Если человеку оторвать ногу он тоже не умрет - это два.
Есть берешься что-то сам написать то сначала надо посмотреть то что уже написано сообществом, и если по каким-то причинам все не подошло пишем все грамотно, тогда и проблем не возникнет.
Я не в обиду просто если есть возможность использовать что-то получше то стоит этим воспользоваться =)
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #12 : 13.02.2016, 18:24:56 »
buyanov а можете написать  свой код который получше  , а то я не разбираюсь в сокетах или лонг-поллинг-ах. )
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #13 : 13.02.2016, 18:30:58 »
Филипп Сорокин спасибо ваш код работает как часы )
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: Вопрос о setInterval ()
« Ответ #14 : 13.02.2016, 18:37:36 »
Ну я бы вообще использовал какой нибудь серверный js вроде nodejs или angularjs. Но это сложно и долго.
интернет-блог: http://websiteprog.ru
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #15 : 13.02.2016, 18:42:51 »
у меня будут  запросы идти  от 3 ох человек  , а интервал могу поставить каждые 1 минуты
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #16 : 13.02.2016, 18:51:33 »
Филипп Сорокин спасибо ваш код работает как часы )

Спасибо - в карму ;)
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #17 : 13.02.2016, 22:07:08 »
Филипп Сорокин плюсанул карму, у меня возникла проблема есть селект и импут на  том же файле. как написать чтоб когда мышь на этом селекте или импуте (или на этой форме) то setInterval остановился, а если мышь не на нем работала ?
« Последнее редактирование: 13.02.2016, 22:13:27 от hamo »
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #18 : 13.02.2016, 22:50:23 »
Всё аналогично:

Код
$('#input-id').on('focus', function() {
    ...
})
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Re: Вопрос о setInterval ()
« Ответ #19 : 14.02.2016, 03:23:22 »
С сокетами конечно лучше на сервере использовать Node.js как уже писали выше.

Но с меня пример =)

Серверная часть у нас будет на PHP создадим какую-нибудь папку в корне сайта (я создал sockets)
Файловая структура проекта:
Код
sockets
|-- bin
     |-- server.php
|-- logs
|-- src
     |-- App
          |--ws.php
|-- composer.json
|-- index.html

Для работы с вебсокетами на PHP я буду использовать библиотеку Ratchet
1. Подготовим проект нашего приложения с помощью Composer
Создадим composer.json
Спойлер
[свернуть]
2. Пишем класс WS который будет осуществлять "общение" с клиентами
Сохраняем в /sockets/src/App/ws.php
Спойлер
[свернуть]
3. Пишем простенький сервер
Сохраняем в /sockets/bin/server.php
Спойлер
[свернуть]
4. Устанавливаем с помощью Composer зависимости для этого просто запускаем
Код
composer install
5. Пишем клиента на JS
Сохраняем куда хотим я положил в туже папку /sockets/index.html
Спойлер
[свернуть]

Тут нужно поменять только адрес нашего сервера у меня на виртуалке домен local.dev сервер я буду запускать на 8080 порту
6. Запускаем из папки sockets
Код
php bin/server.php

в консоль будут падать сообщения

7. Заходим на страницу у (меня http://local.dev/sockets/index.html) в консоли будет видно время с сервера!

8*. Когда наиграемся и решим что пора в бой, наш сервер нужно запустить в фоне (куча статей про демонов на PHP) я поступлю с ним вот так =) отправлю в фон с помощью nohup
Код
nohup php -q bin/server.php > logs/server.log 2>&1 &
сообщения перенаправим в server.log

Ну вот как-то так получается =) Удачи в изучении вебсокетов!

Список литературы:

Документация по Ratchet - http://socketo.me
WebSocket JS клиент - https://learn.javascript.ru/websockets
Статейка с хабра - https://habrahabr.ru/post/79038/
« Последнее редактирование: 14.02.2016, 03:27:46 от buyanov »
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #20 : 14.02.2016, 15:25:16 »
buyanov спасибо за помощь, я тебе плюсанул тоже, но я вообще  с Node.js  и с сокетами не знаком. трудновато как то (((( А не будеть работать если я напишу с помощью сетинтервал ?, вед на сервер будут делать запросы 3 человека  раз в 1 минуту (могу и дольше поставить например до 5 и минут): Мне код сейчас нужен, а чтоб писать на вебсокетах, надо их изучать (((
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Re: Вопрос о setInterval ()
« Ответ #21 : 14.02.2016, 19:45:17 »
Спасибо  ;) Да я видел что уже зарешали вроде  ^-^ Просто написал мало ли, не сейчас так позже пригодится, а может кому-то другому понадобится =)

Просто подход с setInterval() не самый удачный, но при таких условиях (это бэкэнд и нужно 3 юзерам) можно и закрыть на это глаза и сэкономить время.

А и да. Чет так и не понял пример без сокетов нужен?
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #22 : 15.02.2016, 22:01:37 »
народ помогите пожалуйста, мне нужно раз 1 минут обновлять  list.php который находится administrator/components/com_jshopping/views/orders/tmpl/list.php . ну это файл который показывает заказы в JoomShopping. Пробую с помощью setInterval() выдает ошибку Restricted access ((((( как можно решить эту проблему?
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #23 : 15.02.2016, 22:02:23 »
buyanov да ничего не понял )) давай без сокетов пример ))
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #24 : 15.02.2016, 22:14:49 »
Филипп Сорокин setInterval() не останавливается в mozille, работает только в Google и то с какими то паузами, 5 раз норм грузит потом  останавливается на секунд 15-20 и снова  на 5 секунд норм грузит , в чем может быть проблемка?((
Еще проблемка на селекте и импуте не остановливается  setInterval(). вот код

       jQuery(document).ready ( function($) {
          var interval = setInterval(function() {$('#divClass').load("/php/new_user1.php");}, 1000);

          $(window).on('blur', function(){
               clearInterval(interval)
           });
          $(window).on('focus', function(){
                interval = setInterval(function() {$('#divClass').load("/php/new_user1.php");}, 1000)
           });

           $('#mySelect').on('focus', function() {
               clearInterval(interval)
           })
     });   

тут #mySelect мой, при наведении мыши на него setInterval не должен работать
« Последнее редактирование: 15.02.2016, 22:52:26 от hamo »
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #25 : 15.02.2016, 22:57:39 »
Не знаю. Попробуйте что-нибудь вроде

Код
$(window).on('blur', function(){
   clearInterval(interval)
});

$(document).on('blur', function(){
   clearInterval(interval)
});

$(document.documentElement).on('blur', function(){
   clearInterval(interval)
});

$(document.body).on('blur', function(){
   clearInterval(interval)
});

Надо выбрать то, что работает. Ещё вариант не останавливать интервал, а каждый раз проверять, в фокусе ли окно.
« Последнее редактирование: 15.02.2016, 23:40:28 от Филипп Сорокин »
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #26 : 15.02.2016, 23:03:42 »
шас попробую, а про селект что скаже, не останавливается  селект и в гоогле
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #27 : 15.02.2016, 23:10:55 »
События blur, focus для инпутов должны срабатывать всегда независимо от браузеров. По поводу селекта,  попробуйте события mouseover, mouseout.
*

hamo

  • Осваиваюсь на форуме
  • 38
  • 1 / 0
Re: Вопрос о setInterval ()
« Ответ #28 : 16.02.2016, 22:44:49 »
Филип Сарокин вот написал так  вроде  работает ....

var interval=setTimeout(function(){
         $('#divClass2').load("/php/new_user2.php");
   }, 3000);
$('select').hover(function(){
   clearTimeout(interval);
});
$('select').mouseout( function(){
    interval = setTimeout(function(){
         $('#divClass2').load("/php/new_user2.php");
   }, 3000);
});

Она остановится если перейду на другую страницу ? И если закрою браузер она остановится?
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: Вопрос о setInterval ()
« Ответ #29 : 16.02.2016, 22:55:06 »
hamo

Никто не понимает конечную цель, которую вы пытаетесь достичь. Вне контекста общей задачи любые советы будут гипотетическими. На данный момент я вижу, что методы просто безумные!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вопрос по роутеру: вложенность статей друг в друга

Автор effrit

Ответов: 6
Просмотров: 508
Последний ответ 30.09.2021, 10:17:15
от sivers
Вопрос по метатэгам и адресам в блоге

Автор ALEXRAW

Ответов: 1
Просмотров: 368
Последний ответ 22.02.2021, 11:24:12
от ALEXRAW
Вопрос по меню и Seo

Автор virtual-3

Ответов: 11
Просмотров: 486
Последний ответ 28.12.2020, 04:58:58
от rsn
Вопрос по Алиас и формировании строки запроса

Автор Alex_dark74

Ответов: 3
Просмотров: 494
Последний ответ 25.06.2020, 15:29:36
от Alex_dark74
Вопрос по CSS

Автор Lemonez

Ответов: 2
Просмотров: 485
Последний ответ 28.02.2020, 19:40:47
от SeBun