Задать вопрос
  • Нужно ли проверять каждое обращение к БД на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень хороший вопрос.
    Он вызван одной из родовых болезней РНР, в котором по какой-то причине именно операции с базой данных традиционно проверяются на каждый чих. При этом на все остальные операции почему-то никто не обращает внимания.

    Большинство складывателей букв на РНР об этом не задумываются вообще, и очень хорошо что тебе пришел в голову этот вопрос. А ответ на него очень простой:

    Проверять обращения к БД не нужно вообще

    (за исключением нескольких специальных случаев, когда есть определенный сецнарий обработки ошибки)
    Если же такого сценария нет, то никак проверять не нужно. Просто потому, что обращения к БД ничем не отличаются от любого другого кода.
    И поскольку ты не проверяешь каждый include или там оператор деления, то не нужно и проверять запросы к БД. Их надо оставить в покое. И первый, и каждый по отдельности, и все 5 разом.

    А вот что нужно сделать - это договориться с РНР, чтобы он сам сообщал тебе об ошибках в запросах. Для mysqli надо написать перед коннектом
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    Для ПДО при соединении выставить в настройках соединения

    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION

    Всё. Больше ничего для обращений к БД делать не надо.

    А вот обработчик ошибок, общий для всего кода, а не только для работы с БД, настроить желательно.
    Чтобы AJAX-скрипт подписки получал соответствующий НТТР статус при любой ошибке, которая может возникнуть на сервере.
    Ну и разумеется AJAX-скрипт подписки должен проверять НТТР статус, и обрабатывать ответ только если статус= 200
    Пример обработчика можно посмотреть здесь

    Если же надо убедиться, что все пять запросов выполнились без ошибок, то для таких целей служат транзакции.
    Суть транзакции именно в том, что либо выполнияются либо все запросы, либо ни одного.
    Если заключить все 5* запросов в транзакцию, то если при выполнении одного из них произойдет ошибка, то изменения, сделанные остальными, автоматически откатятся!

    *На самом деле в транзакцию имеет смысл заключать только запросы, изменяющие данные. То есть все, кроме первого.

    Соотсветственно, если ПДО настроен на выброс исключений, то при ошибке запроса
    - пдо выбросит ислючение
    - которое будет поймано обработчиком ошибок
    - который выведет код ошибки и завершит работу РНР скрипта
    - при завершении скрипта РНР закроет соединение с БД
    - БД при закрытии соединения автоматически откатит незавершенную транзакцию

    причем без обработчика ошибок будет всё то же самое, только клиенту уйдет код не 500 а 200

    то есть для того чтобы убедиться в том что все запросы выполнились корректно, надо

    1. выставить для ПДО режим исключений
    2. перед первым запросом написать $pdo->begin();
    3. после последнего запроса написать $pdo->commit();
    Ответ написан
    4 комментария
  • Стоит ли на сегодняшний день всё ещё отключать анимацию в мобильной версии сайта?

    Kozack
    @Kozack
    Thinking about a11y
    Вот вам два простых правила:
    1. Не используйте анимацию просто так.
    2. Добавляйте анимации только в тех местах где они действительно нужны. И где без них ну вот вообще никак.


    Например, красиво всплывающий текст кнопки, нужен только для понтов дизайнера и чтобы сайт выглядел "дорого-богато". Если это ваша цель -- тогда ок. Но в других случаях это нахуй пользователю не нужно.
    Другой пример: анимация превращения условной стрелочки у крестик. Тут анимация нужна чтобы привлечь внимание пользователя к изменениям в интерфейсе. И эта анимация нужна на любом устройстве.
    Ответ написан
    Комментировать
  • Каков нормальный размер билда react?

    profesor08
    @profesor08
    Нет. Размер файла должен не превышать 400кб, если превышает, то надо делить на чанки. Но тебе следовало бы перепроверить все модули, которые ты импортируешь, вполне вероятно ты подтягиваешь тонну ненужного.
    Ответ написан
    2 комментария
  • Можно ли передать дескриптор CURL другому скрипту (процессу)?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    Очень необычный вопрос. Официальная документация не даёт на него ответа.
    В PHP вообще не принято иметь общую память между процессами.
    Следует начать с того - зачем это вам надо?
    Ответ написан
    Комментировать
  • Очень сильно трещит кулер и малиновая рябь на экране ещё до загрузки БИОС и при загрузке ОС, что это может быть?

    @antonwx
    Если кабель vga, то это он, или разъём. Отвал не так выглядит, я их насмотрелся за свою жизнь. Вентилятор под замену
    Ответ написан
    Комментировать
  • Очень сильно трещит кулер и малиновая рябь на экране ещё до загрузки БИОС и при загрузке ОС, что это может быть?

    Zoominger
    @Zoominger Куратор тега Компьютеры
    System Integrator
    Не понимаю, почему жужжит кулер

    Замените его, только убедитесь перед этим, что шумит именно он (остановите его пальцем).

    Не понимаю, почему он тормозит

    Из-за сломанного кулера греется железка и начинает троттлить (сбрасывать частоты).

    Не понимаю, почему он рябит на дисплее

    Попробуйте вставить другую видеокарту. Если всё норм, то меняйте. Если нет, то меняйте монитор или кабель к нему.
    Ответ написан
    1 комментарий
  • Как обойти блокировку в приложении?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Добавить в настройках телефона ещё один аккаунт gmail.
    Ответ написан
    Комментировать
  • Как ускорить время SELECT MySQL?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Во-первых не позорься, убери тег big data. 11 лямов - это не бигдата, а кошкины слёзки.
    Во-вторых, надо учиться задавать вопросы.
    Не вопрос вида "доктор, у меня рука болит, как сделать чтобы не болела", а подробно излагать, что за поиск, что за запрос, что за данные, что за столбец, есть ли индекс, что показывает explain.

    В текущем же виде ответ только один - помазать зеленкой добавить индекс
    если индекс есть, и поиск идет по полному совпадению, то смотреть, влезает ли индекс в память
    Если поиск идет по частичному совпадению - то выносить его в отдельный сервис, sphinx/elastic
    Ответ написан
  • Как ускорить время SELECT MySQL?

    @vitaly_il1
    DevOps Consulting
    Возможно ли реализовать эту задачу и если да, то какие есть методы?

    Шлите нам
    - параметры железа
    - explain вашего запроса
    - my.cnf
    Ответ написан
    2 комментария
  • Какая основная библиотека github?

    zagayevskiy
    @zagayevskiy
    Android developer at Yandex
    Это не библиотека, а приложение. Система контроля версий git.
    Ответ написан
    Комментировать
  • Какая основная библиотека github?

    @sw26
    google: установить Git на [ОС]
    Ответ написан
    Комментировать
  • Как запретить повторный лайк?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Какая-то каша, а не код.
    Это же элементарная задача для бэкенда.
    Клиент через Ajax отправляет команду на голосование с параметром ID коммента. POST-запрос типа /vote {id:234, type:"up"}, ID юзера вычисляем на стороне сервера по сессии из хедера запроса или через JWT.
    Сервер смотрит, голосовал юзер или нет.
    И соответственно отправляет клиенту ответ - ок, или ошибку: уже голосовал.
    Ответ написан
    Комментировать
  • Как запустить jpegoptim для большого списка?

    @vitaly_il1
    DevOps Consulting
    find /var/www/cmidnizy/data/www/flugegeheimen.com/wp-content -name "*.jpg" -print0 | xargs -0 jpegoptim -m80

    Это известная проблема, разные способы решения например здесь https://stackoverflow.com/questions/11289551/argum...,
    мой ответ основан на первом ответе из SO
    Ответ написан
    1 комментарий
  • Оцените пожалуйста сборку ПК на Ryzen - 70к?

    @Risurects
    Если хотите именно AMD, то всё норм, кроме :
    1. SSD у вас в сборке древний, найдите любой M.2 nvme за ту же цену со скоростями в 3-4 раза выше.
    Пример:
    spoiler
    5fb78e4fb9251828596905.png
    2. Охлаждения слабое, уже край для 3600X + на разгон вообще запаса нет.
    Радиатор мелкий, возьмите потолще что-то.
    Пример с толстым радиатором и 2 кулера:
    spoiler
    5fb790b9d52a3205097939.png
    3. Сейчас за ту же цену можно найти 1660S.
    Ответ написан
    5 комментариев
  • Что означает на Linux скрипте перед командой символ $?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Это просто строка приглашения.
    Он и означает что вы работаете под обычным пользователем, а # - под рутом. Это и есть его основное назначение, никаких дополнительных функций в этом символе нет.

    Переменная PS1 собственно и содержит строку приглашения, которая содержит обычно имя юзера, имя хоста, текущая директория и этот символ.
    Ответ написан
    Комментировать
  • Php+Mysql. Минимизация кл-во запросов, для подсчета просмотров, как?

    @Stalinko
    PHP'шник и фрилансер до мозга костей
    А зачем делать 20 UPDATE запросов, если можно сделать 1 запрос? :)

    Просто указать все ID списком:
    UPDATE posts SET views = views + 1 WHERE id IN (1,2,3,5)
    Ответ написан
    2 комментария
  • Как настроить cron для запуска php скрипта?

    niremizov
    @niremizov
    CEO, предприниматель
    $_SERVER['DOCUMENT_ROOT']:

    * при запуске через крон/консоль (cli) - пустая
    * при запуске через веб сервер - содержит путь к корневой директории сервера (видимо в Вашем случае это /usr/bin/php /var/www/user/data/www/domain/)
    * подробнее тут

    Для получения текущей директории можно использовать:

    * __DIR__ - возвращает путь к текущему файлу (скрипту)
    * getcwd() - возвращает текущую рабочую директорию
    * подробнее о разнице между способами тут
    Ответ написан
    Комментировать
  • PHPMailer по SMTP - попадает в СПАМ, что не так?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    Ответ написан
    Комментировать
  • Почему возникает ошибка Unexpected token else?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    else {
      alert (SeeLater);
    }
    else {
      ...
    }
    else if {
      ...
    }
    else {
      ...
    }
    else {
      ...
    }
    Ничего не смущает? Соблюдайте стиль оформления, не будет возникать таких глупых вопросов.
    Ответ написан
    Комментировать
  • Как сделать такую полосу прокрутки на сайте?

    Подарите дизайнеру сервый карандаш и попросить нарисовать цветную картину :)
    Это к тому, дизайнер должен понимать принципы веб и такие вещи не придумывать, чтобы потом разработчики не страдали.

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

    Есть второй вариант, это JavaScript, т.е. программировать цвет элементов, в том числе этого "перехода" скроллбара. Сложное решение чтобы описать словами, но если коротко, то писать свой скроллбар, этот ползунок делать как два элемента одинакового или разного цвета, и в зависимости от прокрутки менять их размер и цвет, получится эффект "перехода".

    Вариант №3, опять же JavaScript, это реализация через canvas.

    Вариант №4, и он самый лучший, это согласовать изменения в дизайне.
    Ответ написан
    Комментировать