Ответы пользователя по тегу PHP
  • Как понять, почему падает PHP-FPM?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если читать возвращаемый ответ, видно что он отличается от отправленного важной частью - ошибкой, а конкретнее - ошибочными креденшлсами. Соответственно, скорее всего протухает токен. Предположу что время жизни токена не большое, а перезапуск сервера заставляет клиента получить новый токен принудительно. Что было бы очевидно, если сравнить ексепшн в AuthService.php и строку в ответе.
    Ответ написан
  • Как обойти sql запрос в циклах по группировкам?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    похоже вам нужен JSON_ARRAYAGG()
    Ответ написан
  • Как оформить данный CURL запрос на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Комментировать
  • Корректно ли составлен запрос?

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

    1) Оформляйте запрос строками, так будет гораздо проще и вам, и другим разработчикам понять что вы пишете и как оно работает:
    SELECT * 
    FROM `orders2022` 
    WHERE LOWER(`surname`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`name`) LIKE CONCAT('%', ?, '%') 
    AND LOWER(`fathername`) LIKE CONCAT('%', ?, '%')

    2) Синтаксис верный, но если вам важно найти "хоть одно совпадение", лучше использовать LIMIT 1, это остановит базу в поиске всех вхождений, то есть перебора ВСЕЙ таблицы вместо выхода по первому вхождению. Кроме того, CONCAT('%', ?, '%') можно использовать если вместо ? будет SQL выражение (например каой-то селект), в данном случае это просто трата ресурса процессора. Просто добавьте % в начале и конце подставляемой переменной.
    3) Неплохо давать более четкое описание проблемы, чтобы другим не пришлось гадать о чем код, так как никто кроме вас в контекст задачи не погружен.
    Ответ написан
    Комментировать
  • Как правильно сделать отправку с проверкой условий?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Код ничего не делает, чего вы от него ждете? Либо форму добавьте, либо какой-то код, отправляющий чекбоксы на бэкенд аяксом, например...
    Ответ написан
    Комментировать
  • Как вывести нужную запись по id из бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <!--ССЫЛКА ПЕРЕХОДА НА ЭТОТ ФАЙЛ -->
    <a href="?content=single_city.php&city=<?=$myrow["id"];?>">
    где тут ссылка на файл? у вас ссылка на текущую страницу, в ваше случае - корень сайта/проекта (читай index.php), куда передаются GET параметры. Ничего удивительного что выводится та же страница.
    Ответ написан
  • Если ли PHP-библиотека для конвертации HTML c CSS Grid в PDF?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Принципиально у этой проблемы всего 2 варианта решения:
    1) как уже написали - хедлесс хром на бэкенде - максимально красиво и точно, единственный минус - собсно сам софт, который кроме того что сам по себе жрет проц и память, так еще и не везде есть возможность поставить свой софт на сервер.
    2) Рендер на клиенте через html2pdf, который тоже неплохо справляется, но естественно тоже не без проблем. Во первых - готовый пдф будет не в виде документа с текстом и прочими плюшками, а тупо картинкой. Во вторых - все минусы решений на клиенте в ассортименте: нестандартные шрифты, настройки под "улучшайзинг" визуала по типу изменения масштаба странички, увеличение/уменьшение шрифтов и прочие мелкие радости жизни...

    Короче, выбор между хреновым и плохим решением...
    Ответ написан
    Комментировать
  • Как можно оптимизировать генерацию и загрузку боьшого html?

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

    Можно ли её рендерить на клиенте при помощи js?
    Можно, но скорее всего прироста вы особо не получите. Если проблема на бэкенде - метод рендера будет абсолютно по барабану. Если на форнте - скорее всего будет медленнее, так как вы сначала получите все данные, а потом еще будете средствами языка (а не движка браузера, который очевидно быстрее) отрисовывать хтмл.

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

    Можно ли этот эффект повторить на десктопе?
    Если есть что повторять... Можно попробовать сделать таблицу не цельной, а разбить на несколько таблиц, по 100-300 строк. Или еще адкеватнее - сверстать дивами.

    Как вариант - лэзилоад, по мере прокруки страницы подгружать новые данные по мере необходимости, что сильно снизит как трафик в целом, так и тормоза рендера.

    PS:
    я тоже склоняюсь к неэффективной вёрстке. Если я эту вёрстку буду генерировать js’ом, процесс ускорится?
    Скорее всего, как я уже написал, скорости не прибавится. Вообще что мешает проверить эффективность верстки? Тупо выведите все строки дивами, без всяких разделителей, одна строка - один див с данными, разделенными "|" например, и посмотрите на разницу.
    Ответ написан
    Комментировать
  • Как мне настроить .htaccess?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    добавить файлы статики в исключения. Хотя по идее у вас и так перенаправляться будут только отсутствующие файлы и папки...
    RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png|zip|rar|doc|xls|js|tif|tiff|docx|xlsx|ico)$
    RewriteRule ^(.*)$ index.php [L,QSA]
    Ответ написан
    3 комментария
  • Есть ли библиотека OpenGL для PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Короткий ответ - нет.
    Так-то создать что-то подобное под пых особо не сложно, ну, если есть соответствующие знания и исходники на сях. Чуток правок, компилим в либу пхп, подключаем. Но смысла особо не вижу, проще запустить какую-то готовую утилиту из cli, как например при работе с ffmpeg.
    Ответ написан
    1 комментарий
  • Как ускорить процесс загрузки файлов в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорость канала на сервере — 200 Мбит/с
    Вангую что это скорость на выход, на вход будет совершенно другая скорость, не указанная в рекламном буклете, или написанная где-то под звездочкой оооочень мелким шрифтом.
    Есть вероятность что в вебсервере стоит ограничение на скорость загрузки на клиента, но это можно выяснить и через просмотр конфигов, если таковые доступны.

    Что делать?
    1) Пнуть провайдера и спросить про скорость аплоуда.
    2) Если молчат - проверить самостоятельно, например замерить скорость загрузки файла курлом.
    3) Проверить загрузку через фтп/сфтп
    4) Много думать, ругаться с провайдером
    5) Профит
    Ответ написан
    Комментировать
  • Как вызвать страницу другого сайта и выполнить на ней действие?

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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В виду того что видимо на почве работы с битриксом у ТС появились серьезные проблемы со здравым смыслом - минутка готовых решений:
    <?php
    class config {
    	public $start_time = '1670000999';
    	public $email = 'support@domain.zone'; 
    	public $adm_dir = 'FolderAdm'; 
    	public $adm_name = 'Admin'; 
    	public $adm_pass = '00000000'; 
      }
    $configFile = './core/cfg_test.php'; //доступность файла оставим на совести автора вопроса
    $cfg = new config();?>
    <form method="post">
    <?php 
    foreach ($cfg as $key=>$value) {?>
    	<input name="<?=$key?>" value="<?=$value?>">
    <?php }?>
    <button type="submit">do marasm</button>
    </form>
    <?php
    if($_SERVER['REQUEST_METHOD']=="POST"){
    	$new_cfg = (Object)$_POST;
            file_put_contents($configFile, var_export($new_cfg,1));
    }
    ?>
    Ответ написан
    Комментировать
  • Почему не записываются данные в MySQL базу данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - код, согласно правилам ресурса, должен быть представлен блоком кода, а не шакальным видео.
    Во вторых - перед всем вашим кодом добавляете
    ini_set('display_errors',1);
    error_reporting(E_ALL);
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

    что позволяет вам (пострчно):
    1) отображать ошибки и предупреждения
    2) отлавливать ошибки и предупреждения
    3) выдавать ошибки запроса в бд через ошибки пхп

    Так как разбирать зашакаленный код нет никакого желания, советую вывести запрос в виде текста через ечо или вар_дамп и вставить в пхпмайадмин, хотя и так с включением отладки все станет понятно.
    Ответ написан
    Комментировать
  • Как узнать width и height видеофайла при загрузке на сервер?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ffmpeg
    Ответ написан
    Комментировать
  • Как исправить пустые строки в БД при добавление кириллицы?

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

    Во вторых - научитесь отладке. Если вы не знаете в чем вообще проблема, стоит посмотреть что и на каком этапе пошло не так, для этого в самом примитивном виде нужно использовать var_dump/print_r, ну или инструменты по типу xdebug.

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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Не сочтите за грубость, но вас из крайности в крайность бросает. То вы не хотели связываться с бд так как это "слишком сложно" и хранили все в файлах, измываясь и над собой и над ребятами которые все это пытались как-то образумить... Сейчас есть большой шаг вперед - вы подружились с бд, но теперь, как в той поговорке - если в руках молоток - все кажется гвоздем... Конфиги из нескольких переменных проще хранить в файле настроек, например в формате JSON. Если уж очень хочется забить шуруп молотком - заведите табличку сеттингс, храните в ней пары ключ-значение, или вообще одну строку с тем же JSON.
    Ответ написан
    2 комментария
  • Как обновить блок после удаления и добавления и получить данные для редактирования?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Первое что надо сделать - нормальные запросы с подготовленными выражениями, а не дырявые инъекции...

    Второе - возвращать нормальные данные с понятным (машине) результатом операции, а не текстовый поток сознания. Для этого существует json, который обычно в подобных ситуациях содержит: Код ошибки, текст ошибки, и сообщение для вывода, где первое поле содержит цифру (обычно просто 1 в случае ошибки или 0 в случае успеха), второе поле является необязательным, но сильно облегчает дебаг, и третье - как раз может содержать ваше словесное описание.

    Далее, по результату выполнения операции на бэкенде, исходя из данных полученных обратно аяксом уже решаем что делать, если ошибка - ничего не трогаем, если ошибки нет - добавляем/удаляем строки в таблице. Удаление - банально что-то типа del_button.closest('tr').delete() (емнип). С добавлением сложнее, но в целом ничего особенного, можно засовывать в конец списка, так как не вижу там у вас никакой сортировки при выборке. Строку формируете либо в колбэке, либо можно возвращать готовую в дополнительном поле возвращаемого жсона, и уже оттуда только добавить готовую новую ноду внутрь таблицы.

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