За последние 24 часа нас посетили 34013 программистов и 1819 роботов. Сейчас ищут 772 программиста ...

php демон

Тема в разделе "PHP для новичков", создана пользователем ruslite, 18 фев 2014.

  1. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Здравствуйте! Вот есть скрипт, который заносит данные в БД...тра-ля-ля... Это понятно...
    Думал, как мне выводить эти данные динамически на страницу, при том запрос в БД должен идти, когда ему сообщают. Как понял, делается это посредством Daemon.
    Литературы в Интернете мало, может у кого есть статьи по этой теме или личные наработки? Можно и видео информацию.

    Надеюсь на вашу помощь.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну когда пользователь сдеалл запрос, тогда и показывайте обновленные данные.
    или страница загружена постоянно в браузере и надо обновлять её? тогда можно ajax например. несовсем понятна задача
     
  3. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    делаю чат, но обновлять его n-время это как-то глупо, + нужна система уведомлений. лучше бы если на серверной стороне скрипт узнавал, добавилось ли что в БД, если да, то уже отправляет скрипту-обработчику. Рассчитываю на посещаемость 40к в сутки.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Это делается посредством AJAX. Страница в браузере никак с PHP не связана. Это отрыжка сервера, а не пришитая к нему форма.

    Обновился чат - ajax послал запрос. Тут же. И ждет ответа. Сервер не должен отвечать, пока не будет то, что можно отправить. Только таймаут у аякса надо пожирней и обработчик для него корректный, чтобы перезапуск запроса шел.
    Как только появится новое сообщение - сразу получите обновление и скрипт опять уйдет "слушать сервер". Будет самый настоящий риалтайм чат без избыточных дерганий сервера каждые n микросекунд.

    Либо копайте в сторону сокетов.

    З.Ы. На б-гмерзких фреймах можно написать чать без этих вот аяксов и сокетов вообще. Правда работать будет по олдскульному - обновляясь по собственному таймеру.

    Энивей, готовьтесь, что нагрузка будет высокой.
     
  5. Ke1eth

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

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    node.js

    /thread
     
  6. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Не совсем вас понял. У меня в данный момент реализовано так: js скрипт обновляет блок чата (он находится в блоке див) каждую 1 сек. И мне кажется, когда будет много посещений, то сервер потухнет... Или нет? Просто почитал про демоны, и вроде надо реализовывать ими.

    Да и + уведомления так если тоже делать, но он точно потухнет...

    Добавлено спустя 5 минут 2 секунды:
    Сейчас почитаю, уже слышал мельком про него....

    И вопросы такие, хочу знать ваше мнение:
    1. Насколько он прост и шустрый?
    2. Поможет ли он мне для реализации уведомлений без обновления через n-время и вообще он как-то связан с Daemon PHP?
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Пошустрей всяких PHP будет. Только придётся разобраться, что такое неблокирующие операции.
    (Хотя.. вон была статья в 2010 году: Асинхронное программирование в PHP. Может, будет полезной)
    Если на сокетах сделаешь, то можно получать сообщения через любое время, не мучая сервер запросами.
    С PHP никак не связан. Он сам работает как сервер. Нужен хостинг с поддержкой Node, ну или VDS|VPS, на котором ты сможешь сам легко установить.
    В инете модно приводить пример чата, когда рассказывают о Node, так что проблем с поиском инфы быть не должно.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну значит прочитайте еще раз, внимательнее, медленнее, осмысленнее. То, что там описано, работает как раз как своего рода сокет односторонний. Без задрачивания сервера запросами через секунду. Если есть, что отослать - сервер отошлет, если нет - запрос будет ожидающим. Если написать грамотно, нагрузка будет меньше, чем от ежесекундного долбежа, которым вы, по сути, заддосите сами себя в итоге, если проект взлетит.

    Главное - правильно спроектировать. Продумать ситуации, что бы не было вечных висяков, продумать ситуации, чтобы при большом количестве людей сервер отдавал не каждое новое сообщение всем, а, например, пачками по N штук. Или пачками, собираемыми за N секунд. При активном общении, пользователи и не заметят задержек. Зато сможете нагрузку контроллировать.

    Постройте графики ожидаемой зависимости роста нагрузки от роста людей. Поверьте, зависимость эта ой как нелинейна...
     
  9. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Вот это я и имел ввиду, если что-то есть, то отсылает. Я думал это с помощью демона.

    Добавлено спустя 22 минуты 24 секунды:
    Насколько вообще сложно разобраться с node и как тяжелы в понимание сокеты?

    Добавлено спустя 36 минут 42 секунды:
    Всем спасибо, буду копать nodejs. Очень благодарен за помощь!
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Не тяжело, но может понадобиться время, конечно, чтобы созреть. Если подойти с энтузиазмом, то даже понравится :)
    Ну как ещё ответить? Поисковики в помощь, инфы просто океан.
     
  11. Ke1eth

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

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    в node раздражает только то, что это js и то, что имеет свойсто нагло падать :)
     
  12. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Вы хотите сказать, что он не держит нагрузки или зависит от куда руки растут?
     
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    js не так удобен, как пхп.
     
  14. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    можете предложить альтернативу?

    Добавлено спустя 45 минут 53 секунды:
    Ох, как я понял node никак не связан с php. Есть альтернатива на пхп? Не хочу отказываться от php
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет. пхп рождён чтобы отработал и умер.

    но можно демонов и на пхп.

    только я думаю вам демон не нужен. просто обновляйте аяксом и всё.
     
  16. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Не тупо обновлять это не то. Вообще можно все все делать через пхп, а обращаться к пхп из нода? Просто мне надо, чтобы пхп обращался к базе когда там что-то добавилось. Т е. Эту функцию выполняет нода. мне нужен по сути демон. Не предлагайте тупо обновлять. Это не то.
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не то так не то.
     
  18. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    походу я вас понял. Если я отправил что то, то срабатывает как сигнал скрипту, который к примеру вытаскивает данные из БД, которые я отправил. Я правильно вас понял? И вы писали мол нагрузка будет, это вы про сокеты или про такую систему?
     
  19. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Если писать на Node, то PHP не нужен совсем. Для работы с БД есть модули, которые ставятся одной командой
    Код (Text):
    1. npm install mysql
    заходишь в папку проекта и вызываешь из командной строки, через 3 минуты модуль на месте. Далее подключаешься, как и в PHP:
    Код (Text):
    1. var connection = require('mysql').createConnection({
    2.     host: '127.0.0.1',
    3.     user: 'root',
    4.     password: 'пароль',
    5.     database: 'имя_базы'
    6. });
    Запросы тоже просто:
    Код (Text):
    1. connection.query('SELECT * FROM users', function(err, rows){//все пользователи
    2.     if(err) throw err;
    3.     console.log('The solution is: ', rows);
    4. });
     
  20. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Единственная причина по которой сомневаюсь его изучать: допустим я сделал форму входа на php и js. Все гуд, но к примеру делаю чат на ноде, то как ему передать данные сессии или куки?
     
  21. Ke1eth

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

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Хорошо, если php, то посмотри в сторону Ratchet и почитай про WebSockets, хотя там тоже не без костылей, от того, что не все браузеры поддерживают, до особенностей разных браузеров.
    Хотя имхо сделать сервер на Java проще и правильнее будет.
     
  22. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    Только читал про Ratchet. Андроид вообще толком не тянет... Такая проблема с браузерами конечно... Веб сокеты смотрел и велосипеды, но никто не связывается почти пхп :( . Как мне быть? Есть сайт, как соц сеть. Весь на пхп и js. Надо сделать чат, чат главная фишка. Нагрузка 15к где-то максимум.
     
  23. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Так ты хочешь обрабатывать 15К сессий? Не знаю, хорошая ли идея.
     
  24. ruslite

    ruslite Новичок

    С нами с:
    18 фев 2014
    Сообщения:
    60
    Симпатии:
    0
    А как же мне сделать? Весь сайт перегонять под нод....? не. Сроки плюс еще. Чтобы вы сделали? з.ы.На моем месте
     
  25. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Я правда не знаю, как PHP будет справляться с таким количеством сессий и как связать PHP сессии с сокет соединениями, как точно определить клиента. Нужно поискать инфу, наверняка Америка давно открыта.
    Если нужно взять именно какие-то данные о пользователях из файлов сессий, то можно прочитать и распарсить.
    Типичная сессия:
    файл sess_ni2sosge78k6oa7qe8tkofjg21
    Код (Text):
    1. its_integer|i:10;its_float|d:1.5;its_string|s:7:"my name";its_array|a:4:{i:0;i:1;i:1;i:2;i:2;s:6:"string";s:4:"str2";s:7:"string2";}
    Уникальный номер - в имени файла, переменные внутри.

    upd
    Кстати, когда создаётся сессия, можно узнать её id
    Код (PHP):
    1. echo session_id(); 
    выведет, например, ni2sosge78k6oa7qe8tkofjg21 - это и есть часть имени файла после sess_
    Код (Text):
    1. sess_ni2sosge78k6oa7qe8tkofjg21