Ответы пользователя по тегу PHP
  • Остановить выполнение скрипта?

    @BatteryLow
    Используйте стандартную линуксовую утилиту - flock (пример), запуск нового процесса не произойдет, пока не прекратится выполнение предыдущего.
    Ответ написан
    Комментировать
  • Как сжать html код как gogle?

    @BatteryLow
    Сжимать html это последнее что нужно сделать для оптимизации загрузки страницы выгода от этого минимальна, а если контент динамический вы еще и сервак напряжете нехило особенно если посещаемость большая. В первую очередь разберитесь с кешированием на стороне браузера, минимизацией изображений, созданием спрайтов и объединением css и js файлов, как уже советовали используйте для этого Grunt или Gulp. Это обеспечит реальную оптимизацию которые вы даже визуально заметите без тестов, а минифицированный html это минус несколько килобайт и соответственно миллисекунд загрузки, это даже времени которое вы потратили на составление этого вопроса не стоит.
    Ответ написан
    2 комментария
  • Как отправить письмо PHP скриптом в UTF-8?

    @BatteryLow
    Лучше всего используйте какую-нибудь библиотеку эту например, и отправка для вас станет быстрым и элементарным делом.
    Ответ написан
    Комментировать
  • Php mail почему не приходят письма?

    @BatteryLow
    А письма идут на какую почту? Просто mail.ru например вообще отфутболивает подозрительные письма даже в спам не пихая. Тогда нужно будет смотреть SPF-запись для домена.

    Отправителя нужно посмотреть, иногда хостеры запрещают отправку от отправителя - не принадлежащего домену с которого инициирована отправка.

    Но в любом случае надо внимательно смотреть логи, ответ по-любому должен быть там.
    Ответ написан
  • Цикл while: какие условия он принимает?

    @BatteryLow
    Принцип этого цикла в том, что он обрабатывает результат запроса построчно и после последнего элемента felch() вернет false и цикл закончится. В данном конкретном случае можно обойтись и без него, ведь пара емейл-пароль по-определению должна быть уникальна, и соответственно итерация будет только одна.

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

    @BatteryLow
    Если нужны сложные вариации выражений, то гуглите в сторону лексических анализаторов. Если просто арифметика, то эвал как уже советовали раньше вполне сойдет, главное НЕ ВЗДУМАЙТЕ в него пихать код из внешних источников, либо проводите хотя бы проверку на допустимые символы регуляркой.
    Ответ написан
    Комментировать
  • Как выполнить скрипт через jquery?

    @BatteryLow
    Реализуется это с помощью метода $.ajax() в инете обучающих статей море по нему, большинство знакомство с ним начинали со статей Антона Шевчука они разьясняют все на пальцах, но возможно уже устаревшие, так что лучше естественно смотреть оф дкументацию .

    Вот самый элементарный пример отправки запроса:
    $.ajax({
      url: '/path/to/php/script/',
      type: "POST",
        data:  ({ 'param_1':  1, 'param_2': 0 } ),
        beforeSend: function(){
          $('#button').text('Работаю').addClass('disabled');
        },
        success: function(response){
          $('#button').text('Работа сделана').removeClass('disabled');
        },
        error: function(){
          $('#button').text('Ошибка. Попробуйте еще раз').removeClass('disabled');
        }
       }
    );


    Если вам нужна именно загрузка файлов, то велосипедов луше не городить, а воспользоваться любым подходящим плагином - www.unheap.com/section/inputs-forms/uploading
    Ответ написан
    4 комментария
  • Как составить регулярку на PHP для замены синтаксиса логики псевдокода в синтаксис TWIG?

    @BatteryLow Автор вопроса
    В общем если кому пригодится поступил в итоге так:

    Рекурсивно сформировал массив с содержимым скобок в строке функцией:
    function recursiveSplit($string, $layer, &$result) {
            preg_match_all("/ЕСЛИ\((([^()]*|(?R))*)\)/",$string,$matches);
    
            if (count($matches) > 1) {
                for ($i = 0; $i < count($matches[1]); $i++) {
                    if (is_string($matches[1][$i])) {
                        if (strlen($matches[1][$i]) > 0) {
                            $result[$layer][]=$matches[1][$i];
                            $this->recursiveSplit($matches[1][$i], $layer + 1, $result);
                        }
                    }
                }
            }
        }

    Дальше опять же рекурсивно но, начиная с нижнего уровня(для реализации возможности вложенных ветвлений) прошелся по этому массиву разбивая строки с содержимым скобок с помощью explode (если не получалось, то значит это просто математическое выражение оно обрамлялось в {{ }} для твига) на логическую часть, ветки прохождения проверки и не прохождения соответственно, из этого формировал строку с синтаксисом твига, и заменял на неё псевдокод в исходной строке.

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