Задать вопрос
  • Как реализовать автообновление страницы в ответ на изменения на сервере?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Да слать каждую секунду это не то что нужно. Хотя бы по тому что данные в таком случаи будут приходить раз в секунду и не чаще.

    Для того что бы клиент получил данные мгновенно надо держать с ним постоянно открытое соединение. Это можно сделать используя long polling или websockets. Для php это затруднительно в плане ресурсов сервера, по этому обычно используют комет сервер. Он как правило заточен на поддержание огромного количества открытых соединений.

    Если у вас нет опыта работы с чем nо кроме php вам имеет смысл ознакомится с технологией на примере работы с комет сервисом предлагаемым по Saas модели, это быстрее чем разобратся в node.js и socket.io

    Вот несколько comet сервисов.
    [Ru] comet-server.ru/menu_id/10

    [En] https://www.tambur.io/pricing
    [En] pusher.com/pricing
    Ответ написан
    Комментировать
  • Как сделать мгновенную доставку сообщений (Чат) как в ВК?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Да слать каждую секунду это не то что нужно. Хотя бы по тому что данные в таком случаи будут приходить раз в секунду и не чаще.

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

    Если у вас нет опыта работы с чем nо кроме php вам имеет смысл ознакомится с технологией на примере работы с комет сервисом предлагаемым по Saas модели, это быстрее чем разобратся в node.js и socket.io

    Вот несколько comet сервисов.
    [Ru] comet-server.ru/menu_id/10

    [En] pusher.com/pricing
    [En] https://www.tambur.io/pricing
    Ответ написан
    Комментировать
  • Long Polling тормозит браузер - как это исправить?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Я правильно понял что у вас на каждой из вкладок создаётся long polling соединение с сайтом? Если так то всё правильно, на сколько я помню по стандарту c одним доменом должно быть не более 2 соединений chrome ограничивается шестью. Дальше он ждёт пока завершится одно из открытых соединений.

    Варианта два:
    Не правильно:
    1. отправлять long polling на разные подменены обходя ограничение открытых соединений, но это не правильно так как тот же chrom в сумме на все домены открывает только 255 соединений и проблема повторится.

    Правильно:
    2. открывать на все вкладки одно общие соединение и все данные гонять только через него. А обмен сообщениями между вкладками проводить через событие onStorage.

    Можете в качестве примера разобрать JS API от моего comet сервера (https://github.com/Levhav/CometServerApi.js)
    Ответ написан
    Комментировать
  • Какие есть варианты реализации Comet (Long Polling)?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Смотря какие задачи стоят у вас, но вполне возможно вам имеет смысл воспользоватся комет сервисом предлагаемым по Saas модели. Это быстро и просто, и если нагрузка не большая то можно найти ещё и бесплатно.

    Вот несколько comet сервисов.
    pusher.com/pricing
    comet-server.ru/menu_id/10
    www.gamooga.com/pricing
    https://www.tambur.io/pricing
    https://www.hydna.com/plans-and-pricing/
    comet-vortex.com/index.php/comet/tarify
    Ответ написан
    Комментировать
  • Кто может подробнее расказать про Comet, Long Polling, Websockets, Webworkers и Server-Sent Events (SSE)?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Comet, Long Polling, Websockets

    Вот пример использования comet сервера с online demo

    Практические применения технологии push уведомлений
    Online чаты
    Уведомления о событиях
    Браузерные многопользовательские игры
    Графики обновляемые в реальном времени
    Совместное редактирование документов

    Webworkers это тоже полезно но скорее для каких то web приложений.
    Основная фишка Webworkers это то что
    1. внутри Webworkers все вызовы синхронны в то время как для обычного js к примеру ajax асинхронен.
    2. он выполняется в отдельном потоке от потока GUI - это значит что если там запустить скрипт который будет выполнятся долго то это не отразится на отзывчивости веб страницы и она не подвиснет хотя если что то подобно запустить в основном потке js то пока js не отработает новые вызовы типа onClick не будут вызыватся так как js асинхронен но выполнятся в одном потоке, а Webworkers выполняется в отдельном потоке.

    Это к примеру годится для реализации js майнера биткойнов.
    Ответ написан
    Комментировать
  • Как сделать кросс-доменный Comet сервер?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Я делал комет сервис и обошёлся без iframe, в long-polling используется iframe как очень старый хак для тех случаев где не поддерживается AJAX. Так что в VK он явно не для этого так как они уже не поддерживают те браузеры где это надо.

    А вообще рекомендую использовать websockets он уже многими браузерами поддерживается (caniuse.com/#search=websockets) да и возможностей больше и сообщения быстрее доходят если их много, вообщем куча плюсов.
    Ответ написан
    Комментировать
  • С обеспечением безопасности?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Я на своём vds разделяю сайты ещё модулем apache2-mpm-itk (http://wiki.hasanov.ru/ubuntu/apache_multi_users).

    Он позволяет запускать виртуальные хосты от разных учетных записей в ОС.
    Для каждого сайта завожу нового пользователя в системе и группу в которую входит только этот пользователь. И наделяю его минимальными правами, убираю возможность входа по ssh и тд.
    Виртуальный хост размещаю в домашней директории этого пользователя.
    И повторяю для каждого сайта этот процесс.

    В итоге на одного пользователя в ос один виртуальный хост в его домашней папке.
    В конфиг виртуального хоста добавляю:

      <IfModule mpm_itk_module>
        AssignUserId user1 user1
      </IfModule>
    


    Таким образом если всё правильно то при запуске диспетчера задачь можно наблюдать что для каждого сайта php скрипты выполняются от имени определённого пользователя ОС что гарантирует что даже в через функцию exec или подобную он не сможет навредить.
    Ответ написан
    4 комментария
  • Чат в тяжелом проекте на symfony (в любом тяжелом бэкенд-движке) — как?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Для организации чатов и других видов push уведомлений лучше использовать комет сервер.
    Вы можете поставить себе вот сравнение cometdaily.com/maturity.html
    Или можете воспользоватся Saas решениями

    www.gamooga.com/pricing/
    www.tambur.io/pricing
    pusher.com/pricing
    www.hydna.com/plans-and-pricing/
    comet-server.ru/раздел/10
    Ответ написан
    Комментировать
  • Библиотека для разбора docx файлов

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Я для конвертации использовал команды ос, если у вас не виртуальный хостинг то проблем не будет, можно выполнить функцией exec или аналогичными. php.net/manual/ru/function.exec.php

    abiword -t html '/home/victor/Рабочий стол/Лекция первая и вторая.docx'
    abiword -t pdf '/home/victor/Рабочий стол/Лекция первая и вторая.docx'
    abiword -t txt '/home/victor/Рабочий стол/Лекция первая и вторая.docx'
    


    Соответственно конвертирует файл в html, pdf, txt
    Ответ написан
    4 комментария
  • Как делать сайты на одной странице с плавным листингом страниц?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Плавно скролит окно на 600 px от верха.

     	$("html,body").animate({ scrollTop: 600 }, "slow");
    


    Если вы не хотите использовать Jquery то по таймеру изменяйте значение
          window.scrollTo(x,y)
    
    Ответ написан
    Комментировать