Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вопрос по Ajax

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вопрос по Ajax
deu
Отправлено: 09 Сентября, 2019 - 02:47:10
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




Всем привет.
У меня следующий вопрос.
К примеру зашло 3 человека на сайт. Им выдало каждому 10 000 строк информации.
Есть допустим некий файл stroki-ajax-php , который подключается к mysql и выдергивает оттуда на ajax 10 000 строк из базы и выводит их.

Далее в какой-то из строк произошло изменение каким-то человеком, которое улетело в базу.

Как мне обновить в следующий момент страницу,но чтобы обновлялась лишь одна строка, в которой произошли изменения, а не обновлять снова все 10 000 ?

Подскажите, про что тут нужно почитать или может какой-то примерчик.
Спасибо Ниндзя

(Отредактировано автором: 09 Сентября, 2019 - 03:00:14)

 
 Top
andrewkard
Отправлено: 09 Сентября, 2019 - 11:32:45
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Ставите в базе статус строчке "обновлена" и время обновления, аяксом в цикле шлете запрос на сервер, например 1 раз в минуту, на котором скрипт будет спрашивать в базе есть ли обновленные записи за последнюю минуту, и если есть возвращать ее, если есть данные, обновляем их.
Как то так
 
 Top
deu
Отправлено: 09 Сентября, 2019 - 12:43:06
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




andrewkard пишет:
Ставите в базе статус строчке "обновлена" и время обновления, аяксом в цикле шлете запрос на сервер, например 1 раз в минуту, на котором скрипт будет спрашивать в базе есть ли обновленные записи за последнюю минуту, и если есть возвращать ее, если есть данные, обновляем их.
Как то так


Мне не подходит раз в минуту.
Требуется раз в секунду,как описано выше.
И если есть обновление в базе, как мне из этих строк,
заменить только изменившуюся ? ( при выводе )

(Отредактировано автором: 09 Сентября, 2019 - 13:13:32)

 
 Top
LIME
Отправлено: 09 Сентября, 2019 - 13:40:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




 
 Top
andrewkard
Отправлено: 09 Сентября, 2019 - 14:09:20
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




deu пишет:
Требуется раз в секунду,как описано выше.

забаните свой же сервер
 
 Top
LIME
Отправлено: 09 Сентября, 2019 - 17:00:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




andrewkard это как?
 
 Top
andrewkard
Отправлено: 09 Сентября, 2019 - 17:34:16
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




LIME пишет:
это как

раз в секунду долбить сервер как то не комильфо
 
 Top
LIME
Отправлено: 09 Сентября, 2019 - 17:35:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Согласен
Тут больше pubsub подойдет. Но где его забанят? Чет не понятно
(Добавление)
Может зафлудишь имеется ввиду?
(Добавление)
Задосишь там например
 
 Top
andrewkard
Отправлено: 09 Сентября, 2019 - 17:48:12
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




LIME пишет:
Задосишь там например

да именно это имелось в виду Улыбка

Ты еще на больничном?
 
 Top
LIME
Отправлено: 09 Сентября, 2019 - 17:55:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




andrewkard пишет:
да именно это имелось в виду
ну при небольшом количестве клиентов, а я уверен почти что это так, ничего страшного не случится, особенно если закэшировать. Но можно перебраться за лимиты хостинга по io , потому лучше все же рассылать событие клиентам, а не запрашивать.

Да, болею ужо третий месяц как пошел.
 
 Top
deu
Отправлено: 09 Сентября, 2019 - 21:22:49
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




LIME пишет:
websocket
https://github[dot]com/voryx/ThruwayBundle
https://packagist.org/packages/voryx/thruway


Пока подобрал технологию Long Polling.
Или в этом плане веб-сокеты подойдут лучше ?
 
 Top
LIME
Отправлено: 09 Сентября, 2019 - 21:38:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Подойдут лучше, но не поддерживаются в старых браузерах, но проще разворачиваются. Вернее их не надо разворачивать, в отличии от comet сервера для long polling
 
 Top
deu
Отправлено: 15 Сентября, 2019 - 17:59:07
Post Id



Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Окт. 2016  


Помог: 0 раз(а)




Я немного запутался.

Я взял пару примеров Long Polling из интернета и в целом не увидел принципиальной разницы, если делать обычную схему:
setInterval + ajax , так как в Long Polling он все равно обновляет страницу целиком, как и в стандартном Ajax.

Когда мне нужно заменить лишь старые строки на новые, если есть новые.
А старые не заменять.
 
 Top
Jery
Отправлено: 16 Сентября, 2019 - 08:52:36
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Сент. 2019  


Помог: 0 раз(а)




Добрый день!
прошу помочь разобраться, почему выполняется второй запрос, а первый нет… При этом первый выполняется без второго?

vvar xmlHttp

function showLizo(str)
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Браузер не поддерживает запросы HTTP")
return
}

//Первый запрос
{
var url="LizoOrg.asp"
url=url+"?q="+str+"&v=1"
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
xmlHttp.onreadystatechange=state Changed1
}

//Второй запрос
{
var url="LizoOrg.asp"
url=url+"?q="+str+"&v=2"
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
xmlHttp.onreadystatechange=state Changed2
}
}

function stateChanged1()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("Podr").innerHTML=xmlHttp. responseText
}
}
function stateChanged2()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("Dolgn").innerHTML=xmlHttp .responseText
}
}

function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}

(Отредактировано автором: 16 Сентября, 2019 - 08:54:49)

 
 Top
new01
Отправлено: 30 Октября, 2019 - 12:13:08
Post Id



Посетитель


Покинул форум
Сообщений всего: 301
Дата рег-ции: Июнь 2010  
Откуда: Челябинск


Помог: 1 раз(а)




Я бы на твоем месте написал серверную часть на node.js и использовал сокеты. Загугли почитай, ничего сложного нет. Там буквально у тебя пару сотен строк кода будет, если не меньше. При изменении данных можно просто отправлять всем клиентам с сервера новый фрагмент и всю инфу о нем. Это гораздо легче и эффективнее. Делать setInterval на стороне клиента уже не круто и глупо как по мне. Тем более раз в секунду))


-----
new01
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB