Простейший backdoor на php

Backdoor — тайный ход, лазейка. Разумное человечество использовало всегда запасной случай что-бы не попасть впросак. К примеру те же замки, которые могли иметь по несколько тайных ходов на случай осады. В том же Гарри Поттере это придаёт много интриги сюжету, а вместе с ним и больше свободы, силы и возможностей […]

CSV — кодировки, импорт и экспорт

Comma Separated Values — типичный способ экспорта табличных данных, но далеко не стандартный в плане совместимости между Excel, php и другими источниками данных. Надо читать RFC, и пробовать всё на практике Самое наглядное — если вы думали что данные достаточно через запятую перечислить, то если вы сохраните простой текстовый файл с […]

Сортировка матрицы на PHP

Сортировку можно производить на стороне сервера в БД (самое логичное решение), но зачастую система не продумана заранее настолько и получается что данные приходится выдирать из разных таблиц, между которыми нет очевидных связей. Поэтому сортировать приходится через серверные технологии или даже через javascript на стороне клиента.. Средствами PHP насколько мне известно […]

Профилирование PHP проектов

Профилирование это анализ потребления ресурсов при работе программы. Этимология слова видимо связана с тем что профиль это некая граница, отсюда — поиск границ компонентов ПО в ресурсном пространстве. В моём случае программа это исполняемые php-скрипты, а ресурсы это время, память и нагрузка на процессор. Время исполнения не всегда связано с нагрузкой процессора. […]

Как в docker-compose exec разово задать переменную окружения

Тоже достаточно повседневная задача — выполнить какую-либо команду в bash разово задав переменную окружения меняющую поведение данной команды. Например, в командной строке это может выглядеть так: SYMFONY_ENV=prod composer install —no-dev Однако, если выполнить это через docker-compose exec docker-compose exec -u app php SYMFONY_ENV=prod composer install —no-dev возникнет ошибка:

Как в Symfony 3.4 принудительно закрыть соединение с MySQL

Достаточно частая ситуация, когда скрипт закончил всю работу с базой и переходит к какой-то длительной обработке данных. В такой ситуации соединение с БД остаётся открытым, но никто им не пользуется, в результате чего при большой нагрузке другие клиенты могут получить ошибку: MySQL: ERROR 1040: Too many connections Незадачливый амин или […]

Погружение в Sphinx. Часть 2

В первой части этой серии статей мы создали скелет приложения на laravel, создали необходимые модели и заполнили базу данными. Настало время перейти непосредственно к установке Sphinx’а и его настройке. Устанавливать Sphinx будем из исходников. Можно конечно для установки использовать пакетный менеджер вашего linux дистрибутива, но не стоит расчитывать на актуальность […]

Погружение в Sphinx. Часть 1

Серия статей о работе с поисковым движке sphinx на примере простого приложения на laravel. Поиск — важная составляющая любого сайта, которой стоит уделить большое внимание. От работы поиска зависит user experience составляющая вашего приложения, то сможет ли пользователь найти нужную ему информацию или просто уйдет, неудовлетворив свой интерес.

Испытываем новые JSON возможности в MySQL 5.7

Несколько простых примеров, демонстрирующих работу новых возможностей для работы с JSON в MySQL 5.7. MySQL 5.7 получил новый нативный тип данных JSON и набор SQL функций для работы с ним. Сегодня мы продемонстрируем несколько простых примеров этих возможностей с испльзованием данных SF OpenData.

Типы данных в PHP: self и parent

Разберемся с типами self и parent, которые доступны в PHP с версии 5.0, однако не так широко используемые. В PHP начиная с версии 5.0 мы может указывать типы данных аргументов функций. С выходом новых версий количество возможных тайпхинтов только растет. Краткий ликбез: