• Что значит эта строчка?

    Это тернарный оператор сравнения, аналогом ему может служить if. То, что вы написали (в контексте функции), аналогично
    if($a > $b) {
        return 1;
    } else {
        return -1;
    }


    Если подробнее, то данное выражение означает "если $a больше $b, вернуть 1, в противном случае вернуть -1". То, что после знака "?", выполняется при выполнении условия, а то, что после ":" - в случае невыполнения оного.

    Ничего в данном случае учить или запоминать не требуется, просто запомните, что это, по сути - просто иная форма записи if...else, только в виде тернарного оператора.

    Используется потому, что данная форма компактнее и зачастую красивее стандартного if.
    Ответ написан
    9 комментариев
  • Как сделать оповещение на сайте с помощью php + mysql + ajax для большого количества пользователей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Реализация просто ужасная. но если все же нужно то стоит выучить двунаправленные протоколы. через HTTP теоретически и технически ничего хорошего получится не может.

    "на сайте делается запрос аля comet, ожидает ответа, если ответа нет,
    то через 2 минуты делает новый запрос, и все до тех пор, пока цикл php не выдаст ответ."

    Бесполезная трата ресурсов. Если ничего не происходит вы в холостую гоняете циклы. Для справки каждый процесс пхп минимум требует около мегабайта. оперативной памяти (а зачастую больше) Умножте на количество клиентов и вы поймете что отдавать (на вскидку могу сказать что тут будет примерно по 1,4 мб в среднем) около 700 мегабайт оперативной памяти на холостую обработку слишком жирно.

    теперь представим что мы отказались от циклов на сервере давайте запустим цикл на клиенте? А че? просто на джава скрипте каждые 5 секунд отправляем запрос на сервер скрипт обработчик делает запрос на табличку просто на наличие записей с галочкой new. обрабатывается запрос не долго в считаные милисекунды да еще и все-го лишь каждые 5 секунд лепота... Но клиент сволочь! он вздумал средней кнопкой мыши вкладки открывать! Да еще и по 10 штук! да еще и откроет и не закроет и пойдет свою сантабарбару смотреть! Нативный ДДОС самого себя по другому.

    Как бы вы не пытались найти решение. Но самый грамотный и правильный ответ на ваш вопрос - На связке "ajax + mysql + php" реализовать данный функционал технически не возможно ввиду устройства протокола HTTP.
    Ответ написан
    Комментировать
  • Как сделать оповещение на сайте с помощью php + mysql + ajax для большого количества пользователей?

    Kaer_Morchen
    @Kaer_Morchen
    Разрабатываю web-приложения.
    Я делал так.

    Включил веб-сокет сервер на определенный порт, использовал ratchet.
    Когда на стороне сервера происходит нужное событие, например создание сущности, сокет сервер уведомляется об этом и рассылает уведомления пользователю/пользователям.

    Сами уведомления у меня были 3-х видов, но вам нужно только одно: вида {model: "notify", data: {title: "text", body: "text"}}.

    На стороне клиента парсите и делает что-хотели.

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