• Как можно ускорить работу Exception?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    на расходы конкретно на исключения для 15 000 вызовов (на каждую строку по 1 исключению) будут около 0.01 секунды (сотая секунды крч) для моего локального компа (много, но и данных много)
    Пруф

    618e769ee759d433078044.png


    $error = $this->handle($json);
    if ($error === '') {
    // логируем что все ок
    } else {
    // логируем ошибку
    }

    Тут заменено не только это, а заменено что-то внутри в handle(), тк не летит исключение

    возможно в описании задачи вы не указали, что валидируете возможно через что-то симфовое, не отключив finger cross, который собирает весь стек-трейс или еще что-то... кажется, не хватает контекста для понимания проблемы

    в 15 тыс новых объектов проблемы может не быть. Такие задержки по времени выглядят как проблема на уровне логирования исключений, тк I/O операции над файлом долгие, а сбор трейса исключений и его запись — долгие потенциально.
    Уйдя от исключений вы возможно ушли и от логирования исключений.
    Ответ написан
  • Что такое MVC и как его использовать?

    @matios
    Technical Team Lead
    Советую почитать данную статью на хабре Реализация MVC паттерна на примере создания сайта-.... Там очень хорошо описано с примерами кода. Но следует понимать, что это совсем сырая версия которая описывает сами принципы. Современные фреймворки куда сложнее и универсальнее.
    Ответ написан
    Комментировать
  • Как улучшить код?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Для начала можно удалить весь DocBlock. Во-первых, он не добавляет ровным счётом никакой информации, а во-вторых, ещё и не все параметры содержит.

    Название returnFullOrderInfo можно переименовать в makeFullOrderInfoResponse - в названиях функций слово return не несёт ценности.

    Метод fullInfo тоже можно переименовать в (to|make|get)FullInfo для того, чтобы по названию было понятно, что метод делает.

    Метод responseSuccess тоже криво назван.

    Почему у параметра $warning не указан тип?

    Если $warning связан непосредственно с заказом, то его имеет смысл передавать в качестве аргумента в fullInfo, чтобы инкапсулировать и не менять объект снаружи. Если же не связан, то формат ответа лучше поменять на ['data' => $orderInfo, 'warning' => $warning].
    Ответ написан
    Комментировать
  • Возможно ли win10 сделать приоритет Wi-Fi вместо Ethernet?

    @Akina
    Сетевой и системный админ, SQL-программист.
    при подключении провода подключение Wi-Fi автоматически гаснет.

    Что значит "гаснет"? физически отключается адаптер? логически отключается привязанный к нему сетевой интерфейс? Старайтесь использовать более вменяемые термины, Вы же технический специалист.

    Железка имеет DHCP, сразу выдаёт адрес

    Не только адрес, но и ещё горсть параметров, включая шлюз по умолчанию. При этом уже имеющийся немедленно получает увеличение метрики и перестаёт использоваться.

    Решение одно - после подключения кабеля удалить из таблицы маршрутизации оба дефолтных маршрута и заново добавить только один, нужный. Выполнять каждый раз после отключения/подключения/перезагрузки.

    Windows 10 игнорирует метрики, в зарубежных гайдах говорят "Перестала уважать метрики". Т.е. нет никакой разницы, если поставить "999" метрику на Ethernet и "1" на Wi-Fi

    Явная и откровенная глупость. Абсолютное непонимание того, что есть метрика интерфейса и как она влияет на маршрутизацию.
    Ответ написан
    5 комментариев
  • Поставить индексы на каждое поле?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Если я на каждый столбец, который используется в WHERE добавлю одиночные индексы, не ухудшит ли это производительность?

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

    пока не понятно, какие индексы нужны, а какие нет.

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

    Adamos
    @Adamos
    Дурь это все. Максимум, что вы можете контролировать - это пребывание пользователя на сайте.
    А когда айфон спит, но вкладка открыта, или когда юзер просто сбросил браузер (например, зависший от нехватки памяти) - ни хрена вы не зафиксируете.
    Ответ написан
    Комментировать
  • Как правильно организовать получение списка данных с дополнительным полем - количество?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А что мешает после получения всех элементов просто взять размер полученного массива?
    Ответ написан
    6 комментариев
  • Какая разница между пакетами, зависимостями, extensions, модулями?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Обычно это одно и то же в контексте дополнений к php или библиотек в ОС, от которых зависят эти дополнения.
    Тут на реддите был интересный топик, который раскрывает нюансы
    What's a difference between PHP extension and PHP ...
    Ответ написан
    Комментировать
  • Как получить список из массива без дублей?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    CREATE TABLE categories (
    	id int auto_increment primary key,
      	name varchar(64)
    );


    <?php
    function getRightCategories($db)
    {
    	$result = $db->query('SELECT id, name FROM categories');
    	return $result->fetchAll(PDO::FETCH_KEY_PAIR);
    }
    
    $categories = getRightCategories($pdo);
    
    print_r($categories);


    Test PDO fetch online
    Ответ написан
    Комментировать
  • Как получить список из массива без дублей?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Не могу разобраться, как получить список категорий из массива без дублей.

    Получать нужно из базы нормальный список, без дублей. В вашем случае это будет запрос с дистинкт, как написал roswell, однако:
    1) Запросы с дистинкт будут перебирать всю таблицу, что плохо и медленно
    2) Если у вас категории пишутся в таблицу ньюс, значит у вас лажа со структурой бд. Категории должны лежать отдельной справочной таблицей, выборка из которой будет во первых в разы быстрее, а во вторых будет удовлетворять третьей нормальной форме (3NF).
    3) Текущая структура не позволяет задать более 1 категории на новость.

    Есть еще куча проблем с таким хранением, но это уже другой вопрос.
    Ответ написан
    5 комментариев
  • Код не хочет обновлять данные, что делать?

    Armrisch
    @Armrisch
    Full Stack Developer
    Поставь debug поочерёдно по строчкам кода пойми где всё ломается и сам найдёшь решение.
    Ответ написан
    7 комментариев
  • Почему INSERT вставляет 2 строки вместо одной?

    @galaxy
    Скорее всего, потому что два раза дергается скрипт index.php.
    Он ведь у вас любой url обрабатывает?
    Смотите в браузере Network в Developer tools - наверняка там какой-нибудь запрос на favicon
    Ответ написан
    Комментировать
  • Как работают PHP-потоки (stream)? почему они не загружаются полностью в память?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Эту инфу нужно искать в отрыве от языка, это уровень операционной системы.
    Один из ответов на SO:
    What is Under the Hood in a Stream in Programming?
    Upd. Еще есть пересекающаяся тема как http streaming,
    я когда-то для себя шпаргалку писала (ссылка)
    Ответ написан
    1 комментарий
  • Что такое MVC и как его использовать?

    MVC - это про разделение логики на три основных куска:
    1. View - отвечает только за формирование html - как пользователь будет видеть страничку
    2. Model - отвечает за непосредственно логику по работе с данными, работает с базой данных и другими внешними сервисами. Именно тут следует реализовывать всякую валидацию, CRUD и прочее.
    3. Controller - обрабатывает http запрос, подготавливает данные из него, чтобы их могла обработать Model, а потом передаёт их во View (опционально), либо самостоятельно формирует HTTP ответ из результата.

    PS: это не книжное определение, а чисто моё, как я в большинстве случаев вижу реализацию MVC
    Почему надо использовать именно MVC, а не напрямую с предзапросом и экранированием надо делать?

    Не понял, про какое такое экранирование и предзапросы идёт речь, но MVC нужно просто для удобства расширения и изменения.
    Ответ написан
  • Как изменить GET запрос на фильтрах?

    romandkoz
    @romandkoz
    Формируй фильтры в массиве, а в ссылку добавляй через http_build_query(), тогда не нужно думать о порядке & и ?
    Ответ написан
    Комментировать
  • Как чаще всего бывает на практике?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    На данный момент учу php, а именно: ООП, интерфейсы и трейты.
    ООП, интерфейсы и трейты напрямую к пхп отношения не имеют, это общие принципы построения кода.

    Недавно узнал, что в php есть фишка рендеринга страниц (создаем метод, допустим, render() и вызывает каждый раз его, когда хотим отобразить какую либо php/html страницу).
    Круто, про то как происходит "рендеринг" конечно знать не надо, ну есть и есть...

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

    если допустим, мне дадут по началу задачу "добавить в профиле пользователя строку с номером телефона и передавать ее в бд", на чем и через что я буду выполнять эту задачу, то ли через какой то уже готовый шаблон, то ли есть уже какая то готовая библиотека/фреймворк?
    На компьютере через клавиатуру будете. Возможно будет готовый шаблон (сомневаюсь что мы с вами говорим об одном и том же "шаблоне"), скорее всего это будет какой-то готовый фреймворк, и даже уже какой-то функционал на нем будет написан (но это не точно).

    Читайте как устроены современные MVC приложения на пхп, посмотрите как работают популярные фреймворки, попробуйте на них что-то базовое сделать, станет понятнее как все устроено.
    Ответ написан
    4 комментария
  • Как сделать "показать еще" определенным кол-вом?

    KickeRocK
    @KickeRocK
    FrontFinish
    Вы пытаетесь реализовать пагинацию заново?
    Гуглится так: "#название_языка Pagination"
    Ответ написан
    3 комментария
  • Как отправить JSON данные POST-запросом на PHP?

    zkrvndm
    @zkrvndm
    Архитектор решений
    Попробуйте так:
    <?php
    
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    
    $data = [
        "host" => "www.example.com",
        "key" => "EdD8dkmdNLlxREi2LkhJjYOH2kyQbJqM3cBKT5fX",
        "keyLocation" => "https://www.example.com/myIndexNowKey63638.html",
        "urlList" => [
            "https://www.example.com/url1",
            "https://www.example.com/folder/url2",
            "https://www.example.com/url3"
        ]
    ];
    
    $data_string = json_encode($data);
    
    $result = file_get_contents('https://yandex.com/indexnow', null, stream_context_create(array(
                'http' => array(
                    'method' => 'POST',
                        'header' => array(
                            "Content-Type: application/json; charset=utf-8\r\n" .
                            "Content-Length: " . strlen($data_string) . "\r\n" .
                            "Host: yandex.com"
                        ),
                    'content' => $data_string
                )
            )
        )
    );
    
    header('Content-Type: application/json; charset=UTF-8');
    echo $result;
    Ответ написан
    9 комментариев
  • Как производить переиндексацию в таблице SQLite?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега SQL
    Седой и строгий
    Во-первых, индексация - это не то, что вы описали. Во-вторых, смысл идентификаторов как раз в том, чтобы они никогда не менялись.
    Ответ написан
    Комментировать
  • Как перехватить любое исключение в php?

    thewind
    @thewind
    php программист, front / backend developer
    Ловите \Throwable $e
    Это интерфейс всех исключений
    Ответ написан
    4 комментария