• Откуда берется response?

    Mx21
    @Mx21
    Software engineer
    >И куда копать?
    Может в конроллере для этой страницы, есть что-то типа:

    Yii::$app->response->format = \yii\web\Response::FORMAT_RAW;
     Yii::$app->response->headers->add('Content-Type', 'text/xml');
    Ответ написан
    4 комментария
  • Почему count возвращает постоянно 1?

    Stalker_RED
    @Stalker_RED
    Вероятно потому, что id это уникальное поле, и при группировке получается именно один.
    Но это не точно (вы же не показали, что у вас за табличка).
    Ответ написан
    5 комментариев
  • Ежедневная информация из таблицы как реализовать?

    @aylo
    $wpdb->query("select чето from отсюда where day = 'такой-то'");
    какой вопрос, такой и ответ.
    Ответ написан
    5 комментариев
  • Почему exec ничего не выводит, хотя через командную строку вывод есть?

    myjcom
    @myjcom
    Вы мануалы читаете?
    php.net/manual/ru/function.exec.php
    ;)
    Ответ написан
    Комментировать
  • Что это за конструкция?

    Mx21
    @Mx21
    Software engineer
    Тернарный оператор.
    Ответ написан
    Комментировать
  • Как настроить urlManager в yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Ваш домен должен смотреть в папку frontend/web, откуда они появились в url? По идее должно быть так: hosttraining/site/index
    То что Вы делаете небезопасно. Ибо к файлам framework не должно быть доступа из web. Но если плюнуть на безопасность и здравый смысл, то .htaccess должен быть в корне сайта. У Вас это папка в которой лежит frontend и т.д. И соответственно он должен редиректить на frontend/web/index.phpНо там начнутся новые приколы и проблемы.
    Так что urlManager тут вообще не при чем. Сервер настройте правильно, что бы домен смотрел в frontend/web
    Ответ написан
    Комментировать
  • Как добиться динамического создания страниц и пунктов меню на PHP MVC?

    maddog670
    @maddog670
    Конечно один контроллер для создания таких страниц со своей логикой создания, редактирования и удаления страниц. PagesController, PagesModel, PagesView.
    Ответ написан
    8 комментариев
  • Как принять json с php и протестировать?

    @Mysterion
    <?php
    
    $json = '{
       "error":"ok",
       "result":{
          "amount":"1.00000000",
          "address":"YYY",
          "txn_id":"XXX",
          "confirms_needed":"10",
          "timeout":9000,
          "status_url":"https:\/\/www.site.net\/index.php?cmd=status&id=XXX&key=ZZZ",
          "qrcode_url":"https:\/\/www.site.net\/qrgen.php?id=XXX&key=ZZZ"
       }
    }';
    
    $output_std = json_decode($json);
    echo $output_std->result->address;
    $output_assoc = json_decode($json,true);
    echo $output_assoc['result']['address'];
    Ответ написан
    Комментировать
  • Если бы в интерфейсе можно было реализовывать желаемые методы без необходимости реализации в наследниках, то были бы тогда нужны абстрактные классы?

    qonand
    @qonand
    Software Engineer
    Что бы понять в чем разница между абстрактными классами и интерфейсами для начала стоит немного отойти от их реализации для конкретного языка программирования и понять их суть.
    Что такое интерфейс? это спецификация взаимодействия внешнего мира с объектом. Обратите внимание именно ВЗАИМОДЕЙСТВИЯ, а не реализации.
    Возьмем для примера обычный класс, описывающий какой нибудь выключатель (т.е. задача такого класса включать или выключать какое-то устройство):
    public class Switch 
    {
        public void On()
        {
            // тут предполагается куча кода для включения устройства
        }
    	
        public void Off()
        {
            // тут предполагается куча кода для выключения устройства
        }
    }

    Что входит в состав данного класса:
    1. РЕАЛИЗАЦИЯ функционала включения/выключения устройства (т.е. куча кода который управляет устройством)
    2. ИНТЕРФЕЙС (сигнатура методов On и Off), с помощью которого клиенты класса взаимодействуют с ним.
    Вы можете спокойно управлять объектом этого выключателя, опираясь на его интерфейс, зная что есть метод On отвечающий за включение и метод Off отвечающий за выключение. Но теперь представьте что у Вас десятки разных типов выключателей с разной реализацией и над классом для каждого типа работает отдельный разработчик. Как сделать Ваш алгоритм управления универсальным и независимым от конкретного типа выключателя? Для этого нужно что бы у выключателя в независимости от его типа был одинаковый интерфейс (грубо говоря присутствовал метод On и метод Off). Но как разработчикам классов-выключателей знать что Вам нужен именно такой интерфейс? а если они и знают как заставить их его в точности соблюсти? Согласитесь было бы удобно, если бы была возможность, где-то отдельно описать интерфейс (формализовать его), на который можно было бы опираться при взаимодействии с выключателями, а другие разработчики просто бы его подключали и реализовывали. Вот тут на помощь уже и приходить отдельная конструкция interface, которая позволяет этого добиться. Вы можете сделать так:
    public interface ISwithable
    {
        public void On()
    	
        public void Off()
    }

    это позволит Вам работать исключительно с интерфейсом, не парясь о конкретных реализациях, а так же сторонним разработчикам четко соблюдать необходимые Вам правила.
    Теперь давайте обсудим что же такое класс. Как видно из примера класс это реализация определенного интерфейса и непосредственно конкретного функционала. А чем отличается абстрактный класс от обычного? тем что он позволяет сделать отложенную реализацию части функционала, т.е. переложить ответственность за реализацию на своих потомков. Но тем не менее он по прежнему не только реализовывает интерфейс но описывает функционал. Конечно можно с помощью абстрактного класса сделать некую имитацию только интерфейса сделав все методы абстрактными, но это не совсем правильно т.к. задачи абстрактного класса в первую очередь - это создание возможностей отложенной реализации конкретного функционала.
    Ответ написан
    Комментировать
  • Как правильно составить условие IF PHP?

    AK-VoronM
    @AK-VoronM
    "Мало-мало программист"
    $codes = [4, 16 ... 125];
    if (isset($result['error']) && in_array($result['error']['code'], $codes)) {
         //что-то делаем.
    }


    Вам подойдет функция in_array. В итоге сильно сократит условие.
    Ответ написан
    Комментировать
  • Как технически реализован быстрый чат VK?

    dima9595
    @dima9595
    Junior PHP
    Я не в курсе как это у них реализовано, но думаю что примерно так:
    1. Сам сайт - это SPA.
    2. Плавающее окно сделано через простой html, css (не считая самого функционала)
    3. При изменения страницы - состояние окна не меняется, т.е. отображается на том же месте, где и было ранее.

    PS: Да, знаю, ответ расплывчатый, если его можно вообще считать ответом. Но возможно, вы сможете додумать что-то лучше и реализовать это.
    Ответ написан
    Комментировать
  • Пример метода __call в PHP?

    qonand
    @qonand
    Software Engineer
    Эмуляция множественного наследования с помощью метода __call если когда-то и была - то осталась в прошлом. Большинство задач множественного наследования вполне можно решить с помощью трейтов и интерфейсов
    Ответ написан
    Комментировать
  • Где почитать про "боевое" использование сокетов?

    Stalker_RED
    @Stalker_RED
    Если держит, то как тогда сервер не ложиться от 5-10 тыс онлайна?
    А много вы назовете игр, которые держат такой онлайн? Подсказка: wow держит в разы меньше, например.

    Я вот сходу только EVE-Online припоминаю, они держат десятки тысяч. Но там специальный логин-сервер, который держит соединения, а за ним уже кластер обрабатывающий собственно игру.

    А вообще, сами по себе сокеты не особо требовательны, и можно их сотнями тысяч поднимать. Хватало бы памяти и прочих ресурсов.
    https://blog.jayway.com/2015/04/13/600k-concurrent...
    Ответ написан
    6 комментариев
  • Где почитать про "боевое" использование сокетов?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Еще в 2012 году парни выжимали 1 млн соединений с 1 физического сервера: https://habrahabr.ru/post/123154/
    Даже если снизить накал на порядок и предположить что у них и нагрузка была в плане количества сообщений ничтожной - все равно получается 100 000 соединений с сервера, а это больше чем средний онлайн ААА игры.

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

    "Pubg держит 3 млн игроков" - забавно). Pubg держит 100 игроков в одной сессии и это хороший результат.
    WoT держит 20 игроков в одной сессии.
    EVE в самой большой битве было ~7500 человек, и они вводили своё фирменное замедление времени - сервер обслуживающий локацию не успевал обсчитывать математику.

    А вообще, все проекты обслуживающие большое количество людей строятся изначально исходя из возможности горизонтального масштабирования. В этом смысле сессионки вообще шикарны, изолированная на долгое время группа людей, какие-то связи за пределы группы отсутствуют, никакие серьезные потоки данных из сессии перебрасывать не нужно, целостность данных тоже пофиг по большому счету - идеальная история.
    Ответ написан
    2 комментария
  • Где почитать про "боевое" использование сокетов?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    Йон Снейдер - эффективное использование TCP/IP
    Ответ написан
    2 комментария
  • Есть ли в PHP хеш из цифр?

    @choupa
    Архитектор (обычный, который строит)
    hexdec (... ваш хэш... )
    Ответ написан
    Комментировать
  • PHP. Как сделать цикл выполнения до стоп слова?

    rammtw
    @rammtw
    Press CTRL+S to save project
    while($g !== 'EXIT') {
     // do something...
    }

    или
    while(условие) {
     // do something...
        if ($g === 'EXIT') {
            break;  
        }
    }

    Вместо while, может быть любой цикл (for, foreach)
    Ответ написан
    1 комментарий
  • Добавить одинарные кавычки в начало и конец текста?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    $text = "Это мой текст. Да, вот такой.";
    $text_v_kavychkah = "'" . $text . "'"; // точка означает склеивание строк
    // или
    $text_v_kavychkah = '\'' . $text . '\''; // только одинарные кавычки
    // или
    $text_v_kavychkah = "'$text'"; // в двойных кавычках подставится значение переменной
    // или
    $text_v_kavychkah = sprintf("'%s'", $text); // текстовое значение подставится вместо %s
    Ответ написан
    Комментировать