За последние 24 часа нас посетили 22811 программистов и 1273 робота. Сейчас ищут 780 программистов ...

websockets

Тема в разделе "PHP Free-Lance", создана пользователем Андрей_Php, 16 мар 2018.

  1. Андрей_Php

    Андрей_Php Новичок

    С нами с:
    18 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Здравствуйте
    Столкнулся с такой проблемой, есть сайт на php.
    Для динамического обновления переменных использовал ajax, подгружал в невидимый блок интервалом в 2сек, и собственно все работало, но количество пользователей на сайте возросло и при одновременном наличии более 50 пользователей онлайн, сервер ложиться.
    Почитал интересные статьи про веб-сокеты, но времени на изучение сейчас нету.

    Задача: Сделать скрипт используя websockets который динамично бы обновлял переменные.

    Возможно это?
    И сколько стоит будет?

    В лс пишите сразу с ценой пожалуйста
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    736
    Адрес:
    Татарстан
    Возможно - если у вас VPS
    ибо для поддержки вебсокетов - нужно сервер поднимать
     
  3. mshdn

    mshdn Активный пользователь

    С нами с:
    10 май 2014
    Сообщения:
    40
    Симпатии:
    0
    Не пробовали оптимизировать скрипт, который вызывается через ajax?

    мой емайл для обсуждения - mshdn@rambler.ru
     
  4. Shillkas

    Shillkas Активный пользователь

    С нами с:
    8 июл 2017
    Сообщения:
    25
    Симпатии:
    1
    Да, можно, на сокетах это будет работать быстрее, оперативнее обновляться информация и не будет нагружать сервер по кулдауну.
    Но есть один минус, для этого нужен VPS сервер на котором будет распологаться демон-скрипт для обработки.

    Если для вас это не проблема, обращайтесь, мой email shillkas11@yandex.ru
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
  6. Андрей_Php

    Андрей_Php Новичок

    С нами с:
    18 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    PHP:
    1. <?php
    2. $battle = first('SELECT * FROM battles WHERE user_1='.$_SESSION['id'].' OR user_2=%d',$_SESSION['id']);
    3. $hod = $battle['hod_user_id'];
    4. if ($battle['user_1'] == $_SESSION['id']) {$a= $battle['attac_2'];$d= $battle['attac_1'];}
    5. if ($battle['user_2'] == $_SESSION['id']) {$a = $battle['attac_1'];$d = $battle['attac_2'];}
    6. $b1= $battle['attac_1'];
    7. $b2 = $battle['attac_2'];
    8. $pok1 = $battle['poke_1'];
    9. $pok2  = $battle['poke_2'];
    10. $pokg1 = $battle['to_p'];
    11. $pokg2  = $battle['to_p2'];
    12. if ($battle['batl_tip']=='pvp' ){
    13. if ($hod < 3 && $battle['raund'] == 1 )echo'<script>setTimeout("gopvpBattle()", 1000);</script>';
    14. if ($battle['pobeda'] > 0)echo'<script>setTimeout("gopvpBattle()", 3000);</script>';
    15. if ($b1 > 0 && $b2 > 0 || $battle['per'] == 1 ){echo'<script>setTimeout("gopvpBattle()", 100);</script>';
    16. if($a >0 || $d ==0){
    17. update('battles',array('per'=>0),'id='.$battle['id']);}
    18. }
    19. if ($pokg1 >0 && $a == 0 || $pokg2 >0 && $a == 0 ) echo'<script>setTimeout("gopvpBattle()", 100);</script>';}
    20. ?>
    Скрипт небольшой и оптимизирован по максимуму, и лагов нет, я наперед переживаю, чтобы с ростом онлайна сервер тупить не начал.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    скобки не забывай

    войнушка? ну тут точно надо юзать cenrtifugo :D там есть каналы то да сё
     
  8. Андрей_Php

    Андрей_Php Новичок

    С нами с:
    18 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Что такое cenrtifugo ? Библиотека?
    --- Добавлено ---
    Подскажите если ни чего не менять и глядя на скрипт который сверху.
    Примерно при каком количестве онлайна(Одновременных запросов) начнутся лаги. Виртуальная машина: 6 ядер Intel Xeon ,6144 Mb ОЗУ , SDD
    Или взять выделеный серв и не заморачиваться переделками?


    P.S или вообще не начнутся))))
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    загугли ;)

    c centrifugo не начнутся
     
  10. Андрей_Php

    Андрей_Php Новичок

    С нами с:
    18 дек 2017
    Сообщения:
    20
    Симпатии:
    0
    Почитал про сокеты и цетнрофугу, блин мого переделывать под них, блин да все переделывать(

    Блин ну по идее скрипт маленький, и от того что ajax гоняет его по кругу, хороший серв лагать не должен.

    Вопрос сколько одновременных запросов от клиента может принять ajax, так как все на ajax. Все всплывающиеся окна грузяться ajax-ом, не будет ли мешать сет-интервал, вот в этом бы мне прокунсультироватся,
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    лучше переделай
    а то ты под ajax тоже натрахаешься неделю делать, и один хрен будет хуже работать
     
  12. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    какая красота DDDD
     
  13. storms89

    storms89 Активный пользователь

    С нами с:
    20 июн 2016
    Сообщения:
    59
    Симпатии:
    10
    и че тут такого
    вполне возможно что где-то там выше, единственная точка входа это $_SESSION['id'] = (int)$some_value

    вот это же гораздо веселее
    PHP:
    1. echo'<script>setTimeout("gopvpBattle()", 3000);</script>';
     
    #13 storms89, 22 мар 2018
    Последнее редактирование: 22 мар 2018