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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    открываем htop какой и смотрим что там жрет ресурсы сервера. Не свопится ли он. Так же можно заменить дефолтный менеджер процессорв на какой apache2-mpm-itk

    nginx не только для статики, он еще и для проксирования. То есть если мы хотим в рамках запроса выполнить какой php скриптик то мы можем проксировать оное дело на php-fpm который все выполнит.
    Ответ написан
    Комментировать
  • Как отделить PHP от HTML части?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    отдельное написание php и html кода для сайта

    Разделение уровня на котором данные мы получаем и обрабатываем от уровня представления.

    в вашем случае "отделение" ваше никак не поможет сделать код лучше так как вы всеравно фигачите запросы из шаблонов. Так что просто не парьтесь. Пусть уж лучше ваш код будет простым говнокодом чем сложным.
    Ответ написан
    Комментировать
  • Как отправить два Post запроса подряд с задержкой | PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    <?php
    
    while (true) {
        // тут делайте что хотите
        sleep(5*60);
    }


    И все. Запускать через CLI, можно внутри цикла делать проверки на потребление памяти на всякий случай и дропать демон если что. А если демон упадет - можно воспользоваться supervisord что бы тот его поднимал. Либо еще проще - CRON и запускать скрипт раз в 5 минут.

    Если хотите очередь, заполняемую через WEB интерфейс - вам нужна... не поверите... очередь! Ее можно сделать на reddis (самый простой вариант) с php-resque например. Скрипт обработчик очереди будет забирать новые сообщения на обработку, что-то делать и дальше по кругу. А web интерфейс ложить в эту очередь.
    Ответ написан
    Комментировать
  • Как изолировать стили?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    iframe-ы. Вы можете создать документ и запихнуть его в iframe из JS. И из него же манипулировать. Так же вас может заинтересовать атрибут sandbox для iframe-ов.

    www.html5rocks.com/en/tutorials/security/sandboxed...
    jsfiddle.net/9k9Pe/2 - динамическое создание iframe-а. Далее с содержимым можно будет работать используя свойства contentDocument у элемента. Но лучше организовать взаимодействие чере postMessage: https://developer.mozilla.org/en-US/docs/Web/API/W...
    Ответ написан
  • Почему так популярен Wordpress?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Wordpress стар, очень стар, суперстар как говориться. О существовании оного не знает только тот кто не интересовался CMS. И за все эти годы люди настругали решений на любой цвет. Так же любой школьник сможет создать на его основе себе хом пэйдж и клиенты ценят эту платформу за то что можно дешево и сердито сделать себе сайтик. Ну и админка у них не такая убогая как у джумлы.
    Ответ написан
    1 комментарий
  • Язык php и как выполнить обход массива?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Любым циклом. А тест вы не прошли. Это ж логично! Что именно вас смутило?
    Ответ написан
  • Почему не работает сайт, после смены PHP с 5.2 на 5.3?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Без ошибки остается только гадать. Посмотрите логи.

    Можно конечно вооружиться гайдом по апгрейду и проверять все варианты но это долго нудно и лучше найти сообщения об ошибках.

    php.net/manual/ru/migration53.php
    Ответ написан
    1 комментарий
  • На чем можно быстро делать Landing Page?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Piecrust, Phrozn

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    php.net/manual/en/function.imagecreatefromstring.php и берем содержимое php://input
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Авто нажатие на кнопку в php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Это вам на клиенте разруливать надо, php тут не причем.
    Ответ написан
    Комментировать
  • Phalcon или просто php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    на фрейме(phalcon) или на чистом php?

    Учитывая специфику вопроса на чистом PHP писать не рекомендую в принципе.

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

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

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Если для этого исключения не предусмотрен свой тип (можете глянуть через get_class) то норм. Если отдельный тип исключения таки есть то лучше ловить его + все остальное. То есть избавляться от ветвления в катчах по возможности. Другой вопрос нужно ли вам исключения в массивы конвертить или лучше пусть это фронтконтроллер разруливает...
    Ответ написан
  • YAML: Python vs PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    yaml_parse_file реализован на C, то есть быстрее ничего нет. А вот в PyYAML написан на python. Попробуйте в php разбирать используя пакет symfony/yaml - будет примерно тот же результат (только отключите перед этим модуль yaml пекловский).
    Ответ написан
  • MVC: на сервере или на клиенте?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    всю часть MVC - серверу или клиенту?

    MVC и на клиенте (хотя там скорее MVVM) и на сервере, внезапно так.

    либо одни делают кучу работы, а другие - пару скриптов с логикой, либо наоборот.

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

    Вообще если мы о идеализированных случаях, то фронтэнд и сервер два разных приложения, а между ними HTTP и REST. В зависимости от задач часть ответственности (например сервер отдает пререндренные странички или изображения кропаются на клиенте и заливаются уже обработанными на сервер) перетекает из одной части в другую и наоборот.
    Ответ написан