[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: AJAX+socket для оптимизации.На сколько правильно
Страницы: 1, 2
McLotos
Всем привет. Возникла такая мысля, хочу переписать весь проект так, чтобы все страницы генерировались ajax'ом, но это увеличит количество запросов к серверу, хотя для пользователей всё будет происходить быстрее. Есиь в проекте страница для генерации отчетов. В среднем, генерация одного отчета может длиться от 5и до 20и минут. Подскажите, можно ли сделать так, чтобы пользователю не нужно было ждать на странице пока сгенерируется отчет. Логично что для этого можно использовать сокеты, но есть ли тогда смысл в ajax?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Guest
McLotos
очереди?
sergeiss
Цитата (McLotos @ 24.11.2015 - 17:58)
В среднем, генерация одного отчета может длиться от 5и до 20и минут. Подскажите, можно ли сделать так, чтобы пользователю не нужно было ждать на странице пока сгенерируется отчет. Логично что для этого можно использовать сокеты, но есть ли тогда смысл в ajax?

Почему "логично использовать сокеты"? Можно и их, да. Но можно и по-другому сделать. Сначала одна команда идет на генерацию отчета. Затем делаются периодические запросы, готов ли он. И как готов, так и загружается.

И самое главное: если ты вообще заговорил про сокеты, то почему вообще про аякс говоришь? Если уж сокеты, то сокеты. Зачем им аякс в параллель?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Razzwan
А простое кэширование помочь не может? Или каждый отчет индивидуален и неповторим? Сомневаюсь, что это так.

_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
McLotos
Цитата (Razzwan @ 24.11.2015 - 22:49)
А простое кэширование помочь не может? Или каждый отчет индивидуален и неповторим? Сомневаюсь, что это так.

Это так. Не могу рассказать подробнее, закрытая информация =)
Цитата (sergeiss @ 24.11.2015 - 21:29)
если ты вообще заговорил про сокеты, то почему вообще про аякс говоришь? Если уж сокеты, то сокеты. Зачем им аякс в параллель?

Ну собственно про это и вопрос. Есть ли смысл в ajax =)
Но если вспомнить что AJAX это когда клиент асинхронно запрашивает данные с сервера, а сокеты это когда сервер выполнив задачу заставляет клиента принять работу, то мне кажется вполне логично что для подгрузки GUI можно юзать AJAX, а для сложных и долгих задач только сокеты, потому-что ajax'у тоже нужно ждать ответ.
Вообще задача больше для развития. Т.е. хочется покурить тему сокета.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Цитата (McLotos @ 25.11.2015 - 05:28)
Но если вспомнить что AJAX это когда клиент асинхронно запрашивает данные с сервера, а сокеты это когда сервер выполнив задачу заставляет клиента принять работу....

Не совсем так. Давай я лучше проведу некую параллель, понятнее будет.

Представь, что ты общаешься с человеком, он тебе подсказывает что-то.
Аякс - это как если ты по каждому вопросу звонишь, после ответа отключаешь линию связи. Каждый раз ты должен набрать номер, подождать прохождение вызова, дождаться ответа. Принимающий вызов должен ответить.
Сокеты - это когда ты делаешь вызов один раз и не сбрасываешь соединение всё время, пока оно тебе нужно. И при этом никто не "заставляет" никого говорить или "принимать работу" smile.gif Вы точно также общаетесь, как. Разница в том, что если у другого человека к тебе есть вопрос или инфа, он не должен ждать, когда ты позвонишь, а может спросить сразу же. И ты задаешь свои вопросы и получаешь ответы точно также, как раньше. При этом тебе не нужно каждый раз тратить время на набор номера и ожидание ответа.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Zzepish
sergeiss
все-равно все построенно на сокетах)
Просто при аяксе они прирываются, а при работе на чистом сокете можно поддерживать соединение по необходимости)
Valick
Цитата (Zzepish @ 25.11.2015 - 17:50)
все-равно все построенно на сокетах

кто тебе сказал?
ajax использует http протокол, сокеты испльзуют свой протокол

_____________
Стимулятор ~yoomoney - 41001303250491
Zzepish
Valick
сокет- просто соединение. Оно ниже уровня протоколов. Через сокеты ты можешь работать с любым протоколом.
sergeiss
Valick, в целом Zzepish прав wink.gif Любое соединение с сервером - это обращение к порту (к сокету). Будь это 80 или 8080 для http, будь это отдельный порт (сокет) для WebSocket или любой другой, суть у них на самом деле одна: установить соединение и передать данные.

Слово "сокеты" прижилось больше в связи с WebSocket, но относится не только к ним, а ко всем портам. На всякий случай пруф-линк: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%...%D0%B9%D1%81%29
Точнее, относится не просто к портам, а к паре "адрес:порт".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
sergeiss, не сношай мне мозг


_____________
Стимулятор ~yoomoney - 41001303250491
McLotos
Так получается что я могу полностью избавиться от AJAX.
Но тогда возникает несколько вопросов:
I. Как прикрутить сокеты к такой схеме:
1. index.php решает что хочет построить страницу и через autoload получает нужные классы, создает объекты Config и Request и отдает их объекту FrontController.
2. FrontController запрашивает у фабрики классов объекты Model, View, Controller для текущей страницы. Передает объекты Model и View объекту Controller. Спрашивает у Request, есть ли какие-то GET или POST данные, и отдает их в соответствующий метод объекта Controller.
Как в эту схему вписать сокеты?
II. На сколько я знаю если открыть например несколько вкладок, то будут созданы отдельные сокеты для каждой вкладки, а при переходе на другой url сокет будет пересоздан. Как мне тогда решить основную проблему - клиент запросил отчет с сервера и ушел дальше работать. Как послать клиенту уведомление что отчет готов, если сокет был пересоздан?

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Zzepish
Valick
https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%...D0%BB%D1%8C_OSI кури транспортный уровень (Это сокеты, работаю по протоколу tcp\udp Ip). http куда выше по уровню
Valick
Zzepish, давай ты всётаки не будешь загибать пальцы... речь о веб-сокетах
а так можно всё свести к 0 и 1


_____________
Стимулятор ~yoomoney - 41001303250491
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.