Задать вопрос
Ответы пользователя по тегу PHP
  • Какой кешер для php лучше? Как выбрать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как я понял есть:
    - APC
    - XCache
    - OPCache
    - eAccelerator (вроде не развивается с 2016)
    Из них только OPCache более-менее актуален, а в 7 ветке это уже излишне в принципе.

    - memchached (ставится в связке с кем-то из выше изложенных)
    *memcached не относится к кэшированию кода, это хранилище. Если нужно - лучше использовать редис или какие-то альтернативы посовременнее.
    Ответ написан
    4 комментария
  • Почему не работает include?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    include 'data/param.php;работать не будет, так как у вас кавычка не закрыта.
    Ответ написан
    1 комментарий
  • Как чётные элементы массива сделать ключами, а нечётные значениями нового массива?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    форич/фор, остаток от деления нацело (%), мосх... или различные комбинации всего перечисленного...
    Ответ написан
    Комментировать
  • Какая лучше практика для создания уникального числа и запись его в таблицу, с проверкой на уникальность в этой же Таблице?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - что у вас называется пином? текст, число, какая длина и в каком формате хранится и для чего используется? Насколько это "секьюрная персональная информация"?

    интеджер от 5 до 7 символов
    В идеале, если это пин, он должен содержать какое-то определенное количество символов. Это удобно по многим причинам.

    1 вариант - настроить таблицу на автоинкремент от какого-то пятизначного числа, сделать шаг автоинкремента отличным от единицы и использовать его в качестве пина. Минусы очевидны - привязка к ид, предсказуемость, пляшущая размерность. Плюсы - гарантированная уникальность.

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Никак. Нельзя хранить теги текстовым полем с записанными подряд тегами. Для этого делают связь многие-ко-многим, где теги в отдельной таблице, записи отдельно и есть таблица связей тегов к записям.
    Ответ написан
    24 комментария
  • Как правильно делать соединение с базой данных?

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

    Так же нет необходимости закрывать соединение, оно само автоматически закроется по завершении пхп скрипта.

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Тут в одной таблице все категории, название категорий фильмы или сериала приходят в json формате типо Сериал, фэнтези, драма, боевик, мелодрама, приключения. А на сайте есть подкатегории фильмов и сериалов, я хотел сделать чтобы автоматически определялась категории чет не получается

    не получается по тому что нужно: нормализация, 3 нормальная форма, индексы, джоины, груп бай и вот это все. А так как у вас все это - хирня и баловство. Хотите нормально - делайте по нормальному. Поля в json можно хранить только если по ним нет параметризованных выборок. А у вас туда собственно все параметры запиханы. Лажа короче...
    Ответ написан
    Комментировать
  • Например есть сайт http://site/89798749, как мне сделать, чтобы сделать такую ссылку(после слово site)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    гуглить: единая точка входа, ЧПУ, mod_rewrite, роутинг.
    Ответ написан
    Комментировать
  • Почему не сохраняется JSON в БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Смотри ошибки в логах
    Проверяй содержимое переменных
    Проверь запрос руками из консоли или из пхпмайадмина
    Думай головой
    Ответ написан
    Комментировать
  • При выборе PHP фреймворка стоит ли обращать внимания на тесты скорости?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В текущий момент поддерживаю достаточно большой проект на фалконе, который был написан до меня. Так вот, всем кто там дрочил на сишные либы фалкона, мое вам имхо, основаное на годе поддержки этого проекта:

    1) Оно мегахреново переносится и очень криво становится на свежие системы. Корме того что половина гайдов по установке устарела, но все еще лежит на оф. сайте, гайды сообщества противоречат друг-другу, 90% из них не работает, а про некоторые дистрибутивы можете просто забыть, там они работать просто не будут.

    2) Оно все работает as is и хрен ты посмотришь как работает родная вьюшка/конторллер "внутри", а доки не сказать чтобы хорошо описаны, комьюнити слабенькое, многие вещи сделаны спорно, а поправить или что-то подкрутить дело неблагодарное.

    3) Теперь про самое интересное - скорость работы. Так вот, вся это мутотень про память и прочие плюшки на нормальном сервере не ощущается вообще, то есть переходя определенный предел мощности/вооруженности сервера скорость практически сравнялась с нативом (использовался ларавел и Уии на том же сервере, по замерам - плюс-минус то же по скорости, и чуть больше по памяти (центос, 64гб оперативы, 4 проца, нжинкс, пхп 7.2). Короче выгода была на ветке пхп 5.+, сейчас его актуальность практически равна нулю.

    4) В моем случае по приходу сервер регулярно падал при "серьезной" нагрузке (20-30рпс), в чем я изначально предположил вину старых модулей фалкона, но по факту оказалось что 99% нагрузки вносили ожидания запросов к бд, некоторые из которых были по 7-15 минут, а некоторые куски кода создавали по 80+ запросов с 1 страницы, просто дозапрашивая какие-то данные для вьюшки в цикле. Предыдущий "кудесник" кормил руководство отмазками типа - "мало памяти, железо слабое, все плохо, а то бы летало...". "Магия плохого железа" закончилась после оптимизации запросов и доведения самых тяжелых до 0,5 секунды, а так же выборки всех данных в 1-2 запроса с нормальными джоинами.

    5) Основной вопрос всегда сводится к жадности - взять что-то побыстрее из софта, сэкономив на хостинге/оборудовании. И оно всегда не работает так, по ряду факторов, которые достаточно очевидны.
    Ответ написан
    5 комментариев
  • Почему preg_match неправильно срабатывает?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых надо задать ангриди флаг, во вторых если нужно все - используйте preg_match_all
    https://regex101.com/r/XSYjmy/2
    Ответ написан
  • RedBeanphp как преобразовать данные массива в число?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Это делается средствами того же редбина, ничего придумывать не нужно, просто надо читать документацию или хотя бы уметь в гугл запрос вбить.
    https://redbeanphp.com/index.php?p=/counting
    R::count()
    Ответ написан
    Комментировать
  • Как запретить локальное редактирование input значения перед отправкой формы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Непреложная истина: Все что находится на/приходит с клиента может и будет изменено с целью взлома/вреда.

    Защищать что-либо на фронтэнде абсолютно нет смысла, все проверки делаются на сервере.

    Если открыть консоль браузера и в ручную изменить код инпута, к примеру на value=2222
    То и POST спокойно отправит это значение.
    Ваша задача проверить имеет ли клиент право на изменение объекта с данным значением. Остальное не особо важно, даже если он подставил это значение руками.
    Ответ написан
    Комментировать
  • Как реализовать отправку файлов через форму PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $("#Submitbtn2").on( "click", function(event) {

    меняете на
    $("#zakaz").on('submit', function(event) {
    ... 
    var mydata = $(this).serialize();
    $.ajax({
                type: "POST",
                dataType: "json",
                url: "forms/.request2.php",
                data: mydata,
                cache: false,
                contentType: false,
                processData: false,
    ...
    })

    где точками - код дополните, мне лениво...
    Ответ написан
  • Как обезопасить вход в админку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ravshan selimov,
    isAdmin из состояния редукс

    авторизацию проверяю на сервере,

    Хранить состояние пользователя в сессии, а не в редуксе, хотя дублировать в рдукс можно. При каждом запросе проверять сессию на текущее состояние залогиненного юзера, проверять имеет ли он право обращаться к нужному контроллеру/скрипту. Для более замороченного входа можно еще какой-то ключ прикрепить к админке, например /admin?key=666 и проверять наличие этого ключа, иначе посылать на 404.
    Ответ написан
  • Как запретить переход к файлу по прямой ссылке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Роутинг + mod_rewrite.
    Ответ написан
    Комментировать
  • Как лучше реализовать проверку данных в классе-сущности?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Нужно формировать на уровне класса OrderList метод, реализующий выборку с джоином по 2 таблицам, соответственно если правильно сформировать запрос, то в результатах будут только заказы с существующими юзерами.
    Ответ написан
    5 комментариев
  • Почему скрипт не создаёт файл изображения в папке image при парсинге с сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    С сайта вы тяните урл картинки из img src, в котором, кроме собственно названия картинки, есть путь (папка) до нее, и вы пытаетесь записать файл по пути, которого у вас на сервере нет. Соответственно будет ошибка.
    Ответ написан
    Комментировать
  • Как не танцевать на граблях с бубном делая CRM?

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

    1) Это ваше предположение или вы делали замеры производительности запросов и кода?
    2) Если производительность действительно проседает, то каким образом у вас происходит вычисление? SQL с агрегацией и каунтом?
    3) Сколько строк в таблицах выборки?
    4) Что показывает explain?
    5) Индексы?

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

    Некоторую добавочную скорость может дать просто "долгий" кэш на такие запросы, с которым в принципе могут возникнуть те же проблемы - некоторое время данные будут неконсистентны.
    Ответ написан
  • Как отправить текст НЕ из inputa POST?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    а мне нужно отправить текст который просто в элементе
    Зависит от задачи, а то похоже что вы что-то обычное пытаетесь сделать через... не так.

    1) Яваскриптом: При субмите обходим нужные элементы, формируем из них нужные данные и отправляем на сервер (либо создаем налету инпут, либо отправляем аяксом, по сути одно и то же).
    2) Добавляем скрытые инпуты, дублирующие содержимое элементов. Тогда яваскрипт не нужен, все будет работать автоматически.
    Ответ написан
    Комментировать