• Почему сайт может очень долго грузится?

    den_rad
    @den_rad
    PHP разработчик
    Для начала стоит разобраться, сайт медленно работает из-за передачи данных (медленный канал), большой нагрузки на PHP или нагрузки на базу данных ?
    Ускорить загрузку можно, если пустить сайт через Cloudflare, например.
    Посмотреть, сколько времени генерируется страница можно с помощью профилирования
    Ответ написан
    Комментировать
  • Как вывести текст в консоль браузера через PHP?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    function consoleLogFromPhp() {
      fetch("scripts/consoleLogText.php")
        .then(response => response.text())
        .then(response => console.log(response));
    }


    <?php
    echo 'Hello World';
    Ответ написан
    Комментировать
  • Как перенести длинную строку в коде?

    Newto
    @Newto
    Практика писать
    $text = "text " . "$param" . "...";
    Весьма распространенная, к сожалению.
    Гораздо читабельней написать
    $text = "text {$param}...";
    Исходя из этого и измените вашу строку. Вот как выглядело бы начало:
    $send .= "sudo screen -dmS screen_name docker run {$user_container } {$memory_container}  -d -it --cpus '1' --memory={$mem}m"

    А там уже переносы строк ставьте где хотите.

    P.S. Фигурные скобки, обрамляющие переменные, не обязательны. Но они выделяют эти переменные зрительно, а так же выделяются в разных IDE(средах разработки, проще говоря редакторах кода).
    Ответ написан
    1 комментарий
  • Как обновить версию php на сервере,где расположен сайт на битриксе?

    toxa82
    @toxa82
    Как и для других сайтов. Ставишь новую версию пыхи, переключаешь апач/нджинкс на новую пыху. В зависимости от разницы между версиями, офигеваешь от сломанного сайта и ошибок. Откатываешься назад, ибо обычно просто так апнуть версию без изменения кода не получиться. Поднимаешь версию для разработки на тестовом сервере с новой пыхой, фиксишь/обновляешь код, потом выливаешь это на прод и обновляешь пыху снова. Если руки прямые и из плеч то должно получиться.
    Ответ написан
    Комментировать
  • Неправильно работает округление, это баг?

    iMedved2009
    @iMedved2009
    Не люблю людей
    echo number_format(1.65/0.55, 30);
    //или лучше так
     debug_zval_dump(1.65/0.55);

    https://ru.wikipedia.org/wiki/IEEE_754-2008

    https://www.php.net/manual/en/book.bc.php
    Ответ написан
    1 комментарий
  • Почему происходит редирект на несуществующую страницу в Битриксе?

    Во-первых нужно понять кто редиректит - битрикс или сервак. htaccess при этом может быть не при чем - может у вас там nginx?
    При переходе на поддомен должен открываться index.php в корне. Добавьте в него первой строкой <?die('index.php');
    И откройте поддомен - если увидите белую страницу с текстом index.php и никакое переадерсации не произойдёт - дело в битрикс. Двигайтесь дальше по потоку выполнения и ищите где у вас переадресация. init.php проверьте в первую очередь.

    Если будет редирект - значит он серверный. Разбирайте настройки сервера.
    Ответ написан
    Комментировать
  • Как округлять числа?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    нет точного условия

    1256 => 1300, а почему не 1250?
    138 => 140, а почему не 100?

    ну а в целом, если нужно округление, например до сотен, то делим на 100, округляем и умножаем на сто.
    Ответ написан
    3 комментария
  • Как менять Title у сайта каждые 30 минут?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    $titles = [
        '7:00' =>  "Название сайта one",
        '7:30' =>  "Название сайта two",
    ];
    $half_hour = date('G:i', floor(time()/1800)*1800);
    echo $titles[$half_hour] ?? "Default title";
    Ответ написан
    2 комментария
  • В чем заключается проблема haystack/needle PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Проблема в том, что в разных функциях аргументы haystack и needle находятся на разных позициях.
    in_array(mixed $needle, array $haystack, bool $strict = false): bool
    strripos(string $haystack, string $needle, int $offset = 0): int|false

    Аналогично с позициями callback и array
    array_reduce(array $array, callable $callback, mixed $initial = null): mixed
    array_map(?callable $callback, array $array, array ...$arrays): array
    Ответ написан
    1 комментарий
  • Почему выдаёт ошибку? Подключился через MAMP PRO к локальному хосту и попытался реализовать форму регистрации, но выдаёт ошибку, почему?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Задавать вопрос "почему мой код не работает" бесполезно.
    Просто потому что код может не работать примерно по миллиону причин. Запаришься все перечислять.
    Причём эти причины к самому коду могут не иметь никакого отношения.
    Всегда надо задавать вопрос "как я могу узнать, почему код не работает".

    Чтобы узнать, почему РНР код не работает, надо прочитать сообщение об ошибке РНР. В данном случае мы его не видим, а видим только сообщение веб-сервера о том, что РНР завершился с ошибкой.
    Чтобы увидеть ошибку РНР, надо сделать две вещи:
    1. Убедиться, что РНР генерирует сообщения об ошибках. Для этого во-первых, всегда должен стоять максимальный уровень генерации ошибок, error_reporting(E_ALL);, и во-вторых, программист не должен сам себе стрелять в ногу, насильно подавляя сообщения об ошибках. И никогда не использовать оператор подавления ошибок, @.
    2. На время разработки поставить режим вывода ошибок на экран, ini_set('display_errors', 1);. На боевом сервере, соответственно, этот режим должен быть выключен, а логирование наоборот - включено.

    И только после получения сообщения об ошибке можно уже приходить на Хабр с вопросом. Но сначала предварительно погуглить, потому что все вопросы уже задавали по миллиону раз.
    В данном случае вероятной причиной может быть нестандартный порт mysql. Но опять же, гадать нет смысла, надо сначала увидеть сообщение об ошибке.

    Отдельно отмечу, что в таком виде регистрацию делать бессмысленно, тут сплошная SQL инъекция, то есть кто угодно сможет узнать чужой пароль, залогиниться под чужим именем или вообще зайти без пароля. Все SQL запросы, в которых участвуют переменные, в обязательном порядке должны выполняться через подготовленные выражения, с заменой переменных на знаки подстановки.
    Кроме того, пароль в обязательном порядке должен стойко хэшироваться, функцией password_hash()
    Ответ написан
    Комментировать
  • Ошибка phpstorm+Xdebug не работает в чем может быть дело?

    @xrj
    Столкнулся с такой же проблемой. Раньше все работало, а после обновления версии Open Server перестало, хотя все конфиги правились точно так же.

    Ответ для себя нашел здесь: https://devnet.jetbrains.com/message/5478634 в последнем сообщении.

    Мне помогла установка xdebug.extended_info в 1, в конфигах он теперь прописан явно равный 0
    Ответ написан
    8 комментариев
  • Что за код на 10000 строк?

    vabka
    @vabka
    Токсичный шарпист
    Это минифицированный код.
    Спрашивай у автора, где исходники
    Ответ написан
    Комментировать
  • Передать значение в форме?

    @alexalexes
    <form action="/index.php" method="POST" >
      <input name='pers_delete' type='hidden' value="сюда подставляете значение переменной"/>  
      <input name='submit' type='submit' value="1" class='del_pers'/> 
    </form>

    <?php
       if (isset($_POST['submit']))
       {
         echo $_POST['pers_delete'];
       }
    ?>
    Ответ написан
    Комментировать
  • Почему Redis начал тормозить?

    Наверное, при замере смешано время запроса к Redis и обработки данных.
    Ответ написан
    Комментировать
  • Как перевести минуты в часы с округлением до 15 минут?

    Lynn
    @Lynn
    nginx, js, css
    Поделить на 15
    Округлить
    Поделить на 4
    Ответ написан
    Комментировать
  • Как сделать чтобы пользователь мог управлять только собственными комментариями?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    1. Нужно реализовать механизм аутентификации пользователя, чтобы вы могли быть уверены, что запрос поступает от пользователя с ID X. Это не обязательно должен быть логин и пароль, но какой-то механизм обязательно должен быть.
    2. У комментария должно быть поле "автор", в котором будет храниться ID пользователя.
    3. В коде редактирования нужно сделать проверку на совпадение ID автора с ID пользователя.


    В качестве альтернативы ID пользователя может быть IP, но это гораздо менее надёжная проверка.
    Ответ написан
    Комментировать
  • Как получить график громкости аудио без его воспроизведения?

    Okujava-script
    @Okujava-script
    Веб-программист с абсолютным слухом и композитор
    Декодирование аудиоданных из аудиофайла с помощью WebAudio Api можно действительно делать без воспроизведения этого файла. А это значит, что это может происходить по ходу загрузки страницы, и клики при этом не нужны.
    <html>
    <head>
    <meta charset="utf-8">
    <title>Визуализатор</title>
    <style>
    #canvas{
        position: absolute;
        top: 50px;
        left: 0px;
        background: #333;
    }
    #progress{
        position: absolute;
        top: 50px;
        left: 0px;
        background: rgba(255, 155, 0, 0.5);
        width: 0px;
        height: 256px;
    }
    </style>
    </head>
    <body bgcolor=#444>
    <audio id=audio src="sound.mp3" controls></audio>
    <canvas id=canvas width=512 height=256></canvas>
    <div id=progress></div>
    <script>
    var audio = document.getElementById("audio");
    var ctx = canvas.getContext("2d");
    var color_L = "#7cf", color_R = "#f7c"; // Цвета осциллограмм левого и правого стереоканалов
    var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
    audio.onplay = function(){b = setInterval(function(){progress.style.width = Math.floor(audio.currentTime / audio.duration * canvas.width) + "px"}, 100)};
    audio.onended = function(){ 
        this.currentTime = 0;
        clearInterval(b);
        progress.style.width = "0px";
    }
    var source = audioCtx.createBufferSource();
    var request = new XMLHttpRequest();
    request.open('GET', audio.src, true);
    request.responseType = 'arraybuffer';
    request.onload = function(){
        var audioData = request.response;
        audioCtx.decodeAudioData(audioData, function(buffer){
            source.buffer = buffer;
            data_L = buffer.getChannelData(0);
            data_R = buffer.getChannelData(1); // Если аудиофайл моно - поменяйте в этой сроке единицу на ноль.
             // При несоответствии количества стереоканалов - ошибка в консоли и код не работает.
            for(var i = 0; i < data_L.length; i++){
                var x = Math.floor(i / data_L.length * canvas.width);
                var L = data_L[i] * canvas.height / 4;
                var R = data_R[i] * canvas.height / 4;
                if(Math.floor(i / 16) == i / 16){ // Число 16 для больших аудиофайлов лучше побольше. Нужно подбирать.
                    ctx.fillStyle = color_L;
                    ctx.fillRect(x, canvas.height * 0.25 + L, 1, -L);
                    ctx.fillStyle = color_R;
                    ctx.fillRect(x, canvas.height * 0.75 + R, 1, -R);
                }
            }
        },
        function(e){"Error with decoding audio data" + e.err});
    }
    request.send();
    canvas.onmousedown = progress.onmousedown = function(e){
        progress.style.width = e.pageX + "px";
        audio.currentTime = e.pageX / canvas.width * audio.duration;
    }
    canvas.ondblclick = function(){audio.play()};
    ctx.fillStyle = color_L;
    ctx.fillRect(0, canvas.height * 0.25, canvas.width, 1);
    ctx.fillStyle = color_R;
    ctx.fillRect(0, canvas.height * 0.75, canvas.width, 1);
    </script>
    </body>
    </html>
    62bb7dc72e0ba998610708.jpeg
    Ответ написан
    Комментировать
  • Как устроен запрос в базу данных для вывода древовидных комментариев?

    @romicohen
    Системный Архитектор
    Для каждого камента делаешь поле parent_id куда пишешь id родительского камента

    voila!))
    Ответ написан
    2 комментария
  • Можно как то суммировать эти цифры использую цикл php?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    array_sum(range(10, 40, 2));
    Это?
    Ответ написан
    1 комментарий
  • Как на php отрисовать динамическую картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    рассматривал реализацию через GD библиотеку, но как то сложновато и громоздко получается,
    Ничего особо сложного, просто много кода. Это нормально. Берутся готовые блоки, выстраиваются в структуру, рисуются на холсте и выводятся. Не нравится гд - возьми имажик.
    Ответ написан
    2 комментария