Задать вопрос
Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как отобразить русские символы, полученные из ajax?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Надо научиться пользоваться базой данных.
    И хранить в ней данные не сваленные в кучу, а в структурированном виде.

    Поэтому переделываешь свою БД, добавляешь новые таблицы и колонки, раскодируешь свой развесистый джейсон и записываешь каждое значение в свою ячейку
    Ответ написан
  • Какие есть плагины для парсинга контента?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не нужен парсинг для того, что тебе просто дают в руки.
    Ответ написан
    2 комментария
  • Как сделать обновление данных из бд без перезахода?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Не класть в сессию больше данных чем необходимо, а читать их из БД.
    Ну или по крайней мере обновлять их в сессии после изменения
    Ответ написан
    2 комментария
  • Вывод файлов из папки на php. Как сделать постраничную навигацию?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Перестать маяться глупостью и переписать с файлов на БД.
    Хотя бы sqlite
    Ответ написан
  • Почему файл всё равно выполняется если даже у него убраны все права?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    потому что это не исполняемый файл

    Исполняемый файл это файл который исполняет операционная система.
    в данном случае РНР файл исполняется не операционной системой, а веб-сервером, и права на исполнение к нему не имеют отношения вообще никакого
    Ответ написан
    1 комментарий
  • Возможна ли такая реализация (backend php)?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Вопрос не очень понятен. Если проблема в том что для получения различных данных требуется один и тот же запрос, то разумеется не нужно этот запрос дублировать. Запрос будет один, и "репозиторий" будет выполнять его с разными входящими данными.

    Правда, традиционно "файл с SQL запросами" обычно называется репозиторием , а "репозиторий" - сервисом или хелпером.

    В общем, нормальная структура такая

    1. Класс "запросы в БД". "Подтягивает" к себе соединение с с БД
    2. Класс репозиторий. Подтягивает к себе класс "запросы в БД". Каждый метод возвращает структуру данных, очень условно говоря - "модель".
    3. Контроллер выполняет методы репозитория, получая "модели", и формируя "переменные" на основании данных из этих "моделей". При этом СОВСЕМ не обязательно чтобы одной "переменной" соответствовала одна "модель", а для каждой "модели" писался свой запрос.
    Модель может содержать сразу много переменных. Например агрегирующие можели могут сразу возвращать и среднее и максимальное и и манимальное значение. А контроллер уже решит акое ему надо
    Самое главное, запросы можно формировать динамически! Если у тебя запрос который выводит данные за все время, к нему просто добавить условие, что если в метод репозитория переданы даты, то к запросу добавляется выборка по датам. И сразу получается что метод в репозитории один!
    То же самое касается и других условий. Надо только синие утюги? Нет проблем - в тот же самый метод добавляется проверка на наличие цвета в условиях и если есть - это условие добавляется в запрос.

    то есть запросы
    SELECT count(field) FROM table WHERE a<100;
    SELECT count(field) FROM table WHERE a=1 AND field_1 = 'd'; 
    SELECT count(field) FROM table WHERE a=1 AND field_1 = 'd'  and date between 2019 and 2020;

    это ОДИН метод
    Ответ написан
    24 комментария
  • Если обрабатывать множество запросов к БД в цикле, насколько правильным будет заворачивать в транзакцию каждую итерацию?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Логика зависит от логики.

    Ты должен спросить себя: если что-то пошло не так при обработке одной записи, то надо откатить изменения связанные только с этой записью, или со всем чанком?
    И получишь ответ на свой вопрос

    Если все равно, то лучше весь чанк.
    Ответ написан
    7 комментариев
  • Есть ли какой-то смысл делать сайт на symfony вмето laravel, с пиковой посещаемостью 10 000?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Нет.
    Ради странных фантазий о том что код, написанный Симфони тем же самым программистом будет работать в 10 раз быстрее чем код под Ларавель, менять точно не стоит.

    Ради будущего расширения проекта, если писать с соблюдением рекомендованных практик - вполне стоит, средний проект на Симфони обычно более расширяемый и поддерживаемый, чем типичное фигак-фигак и в продакшен на Ларе

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Поместить его в конструктор?
    Ответ написан
    Комментировать
  • Функция simplexml_load_file(YOUTUBE_URL) в php уже не актуален?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Лучше документации никто не объяснит.
    и примеры там тоже есть.

    И нет - программирование это не взять готовый кодик, а если не работает то попросить другой.
    Надо садиться и разибраться. Если у тебя будут вопросы по конкретным проблемам, с которыми не поможет гугль - тогда мы будем рады помочь.
    Ответ написан
    1 комментарий
  • Как работае вебсокет с сервером, несколько вопросов по php-fpm?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1 воркер дает 1 подключение к серверу?

    нет

    если кол-во воркеров 4, то 5й пользователь уже не сможет подключиться?

    сможет

    Я правильно понимаю что клиент постоянно держит соединение с сервером?

    правильно

    если он откроет 10 вкладок в браузере, то это будет 10 подключений?

    будет
    только непонятно при чем здесь php-fpm

    Как работае вебсокет с сервером

    веб-сокет не работает с сервером. вебсокет работает с клиентом
    Ответ написан
  • Как мне удалить запись из MYSQL с помощью PHP?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Сразу объясню почему мультизапрос

    господи, сон разума рождает чудовищ.

    мысль выполнить SET NAMES отдельным запросом тебе в голову не приходила?
    если уж ты не осилил сделать это правильно, черех mysqli_set_charset()
    Ответ написан
    3 комментария
  • Правильно ли использовать в приложении много дочерних классов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну то есть ты спрашиваешь, что лучше - один класс на 10000 строк или сто классов по 100 строк?
    Тебе самому ответ не очевиден?
    Ответ написан
  • Как получить значение, а не удалить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    получить - preg_match()
    Ответ написан
    Комментировать
  • Можно ли проверить почту на существование?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очередная погоня за воображаемыми проблемами.

    Тебе русским шрифтом пишут, сервер не раскрывает, существует ли учетная запись. Что в этом предложении не ясно?

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

    А "репутация" поддерживается совсем другими средствами, а не случайными телодвижениями на основе ночных фантазий
    Ответ написан
    5 комментариев
  • Какой материал для изучения БД выбрать?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    История простая.
    Когда компьютеры были большими а оперативная память стоила как самолет, были изобретены реляционные СУБД, который хранили данные на диске, а индексы - в памяти. Работают быстро, масштабируются, оптимизируются, хранят данные в легко описываемой и структурированной форме.

    Когда оперативная память подешевела, появились стильные модные молодежные базы данных типа nosql. Которые делятся на тупо живущие в оперативе, то есть по сути не являющиеся базами данных вообще, а скорее кэширующими демонами, как например пример редис, и "документо-ориентированные" БД, которые тоже живут исключительно если только целиком помещаются в оперативе, как например Монго. Из-за принципа "храним всё как бог на душу положит", каждая запись содержит не только сами данные, но и их структуру - имена полей, вложенность, и пр. То есть если в реляционной БД ты просто смотришь на заголовок таблицы, и понимаешь, в какое поле тебе класть вот эти данные, то в no-sql ты перебираешь ВСЕ записи в поисках нужного поля. И все равно одни и те же данные в итоге хранятся в десятках разных полей. Ну и добавляет удобства ещё то, что поскольку все имена полей хранятся вместе с записями, то сообразительные разработчики для экономии памяти сокращают имена до одной-двух букв. Что конечно сильно облегчает работу с базой

    Ну и есть еще специализированные БД, например хранящие данные не в строках, как реляционные, не в пампасах, как nosql, а в колонках, для быстрой агрегации. Например Кликхаус.

    Есть еще всякая мелочь, типа key-value storage, но у меня не поднимается рука называть их БД. Не называешь же ты массив в программе базой данных.
    Ответ написан
    1 комментарий
  • Как вывести текст Exception'a вместо 'Server Error' Laravel?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Чтобы сделать вывод конкретного исключения, надо его создать. Например
    class SooperPooperException extends BaseException {}

    после этого его можно будет поймать в контроллере, и вывести стандартным образом.
    try {
        // вызываем свой код который может кинуть исключение
    } catch (SooperPooperException $e) {
       // рендерим ответ
    }


    Но при этом никаких корневых исключений не ловить, а только те, которые содержат текст для пользователя
    Ответ написан
  • Не подключается к БД через PDO?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ничего "более развернутого" не нужно, все и так открытым текстом написано: указаны неверные параметры подключения.

    И нет, не надо мне доказывать, что все верно. Доказыавть надо своей базе данных. Если бы было всё верно, соединилось бы без проблем. Л - логика.

    Пользователь бд идентифицируется тремя пунктами - имя, пароль и хост, с которого соединяется.
    Вот и надо смотреть, есть ли пользователь user@localhost с таким паролем
    И дальше надо смотреть какие права у этого пользователя на указанную при коннекте бд
    Ответ написан
    Комментировать
  • Где лучше прописывать PHP код?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    index.html чисто для HTML и server.php для PHP бывает только в самых примитивных учебных проектах.
    В реальном коде такого разделения не бывает, и все файлы, содержащие HTML, код обрабатываются интерпретатором РНР.

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