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
Форумы портала PHP.SU :: Версия для печати :: Вопрос по Ajax
Форумы портала PHP.SU » » Вопросы новичков » Вопрос по Ajax

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

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

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

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

Подскажите, про что тут нужно почитать или может какой-то примерчик.
Спасибо Ниндзя
2. andrewkard - 09 Сентября, 2019 - 11:32:45 - перейти к сообщению
Ставите в базе статус строчке "обновлена" и время обновления, аяксом в цикле шлете запрос на сервер, например 1 раз в минуту, на котором скрипт будет спрашивать в базе есть ли обновленные записи за последнюю минуту, и если есть возвращать ее, если есть данные, обновляем их.
Как то так
3. deu - 09 Сентября, 2019 - 12:43:06 - перейти к сообщению
andrewkard пишет:
Ставите в базе статус строчке "обновлена" и время обновления, аяксом в цикле шлете запрос на сервер, например 1 раз в минуту, на котором скрипт будет спрашивать в базе есть ли обновленные записи за последнюю минуту, и если есть возвращать ее, если есть данные, обновляем их.
Как то так


Мне не подходит раз в минуту.
Требуется раз в секунду,как описано выше.
И если есть обновление в базе, как мне из этих строк,
заменить только изменившуюся ? ( при выводе )
5. andrewkard - 09 Сентября, 2019 - 14:09:20 - перейти к сообщению
deu пишет:
Требуется раз в секунду,как описано выше.

забаните свой же сервер
6. LIME - 09 Сентября, 2019 - 17:00:29 - перейти к сообщению
andrewkard это как?
7. andrewkard - 09 Сентября, 2019 - 17:34:16 - перейти к сообщению
LIME пишет:
это как

раз в секунду долбить сервер как то не комильфо
8. LIME - 09 Сентября, 2019 - 17:35:41 - перейти к сообщению
Согласен
Тут больше pubsub подойдет. Но где его забанят? Чет не понятно
(Добавление)
Может зафлудишь имеется ввиду?
(Добавление)
Задосишь там например
9. andrewkard - 09 Сентября, 2019 - 17:48:12 - перейти к сообщению
LIME пишет:
Задосишь там например

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

Ты еще на больничном?
10. LIME - 09 Сентября, 2019 - 17:55:38 - перейти к сообщению
andrewkard пишет:
да именно это имелось в виду
ну при небольшом количестве клиентов, а я уверен почти что это так, ничего страшного не случится, особенно если закэшировать. Но можно перебраться за лимиты хостинга по io , потому лучше все же рассылать событие клиентам, а не запрашивать.

Да, болею ужо третий месяц как пошел.
11. deu - 09 Сентября, 2019 - 21:22:49 - перейти к сообщению
LIME пишет:
websocket
https://github[dot]com/voryx/ThruwayBundle
https://packagist.org/packages/voryx/thruway


Пока подобрал технологию Long Polling.
Или в этом плане веб-сокеты подойдут лучше ?
12. LIME - 09 Сентября, 2019 - 21:38:02 - перейти к сообщению
Подойдут лучше, но не поддерживаются в старых браузерах, но проще разворачиваются. Вернее их не надо разворачивать, в отличии от comet сервера для long polling
13. deu - 15 Сентября, 2019 - 17:59:07 - перейти к сообщению
Я немного запутался.

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

Когда мне нужно заменить лишь старые строки на новые, если есть новые.
А старые не заменять.
14. Jery - 16 Сентября, 2019 - 08:52:36 - перейти к сообщению
Добрый день!
прошу помочь разобраться, почему выполняется второй запрос, а первый нет… При этом первый выполняется без второго?

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
}
15. new01 - 30 Октября, 2019 - 12:13:08 - перейти к сообщению
Я бы на твоем месте написал серверную часть на node.js и использовал сокеты. Загугли почитай, ничего сложного нет. Там буквально у тебя пару сотен строк кода будет, если не меньше. При изменении данных можно просто отправлять всем клиентам с сервера новый фрагмент и всю инфу о нем. Это гораздо легче и эффективнее. Делать setInterval на стороне клиента уже не круто и глупо как по мне. Тем более раз в секунду))

 

Powered by ExBB FM 1.0 RC1