Шпаргалка по работе с Selenium, Webdriver и PhantomJS на PHP

Небольшой список рецептов, ссылок и советов которые будут полезны при работе с Selenium, Webdriver или PhantomJS на PHP. Webdriver PHP API cheatsheet https://gist.github.com/aczietlow/7c4834f79a7afd920d8f Как работать с ожиданием элементов https://github.com/facebook/php-webdriver/wiki/HowTo-Wait Работа со вкладками, алертами и фреймами https://github.com/facebook/php-webdriver/wiki/Alert,-tabs,-frames,-iframes Так работать с Selenium Webdriver через прокси https://github.com/facebook/php-webdriver/wiki/HowTo-Work-with-proxy

Laravel Horizon: выполнение задач с продолжительностью более 60 секунд

Ещё одна откровенная тупость в Laravel Horizon — по-умолчанию все задачи выполняющиеся более 60 секунд просто обрываются без какого-либо уведомления или сообщения об ошибке. И чтобы решить эту проблему, нужно воспользоваться парой недокументированных опций в конфигурационном файле. Ниже расскажу как установить более адекватный таймаут для выполнения задач в Laravel Horizon.

Laravel Horizon: ошибка 419 Authentication Timeout

Laravel Horizon — новомодная админка для работы с Redis в качестве системы очередей сообщений. Однако, нельзя просто так взять и начать с ней работать. Одна из частых проблем возникающих после установки: часть данных не подгружается через ajax-запросы, а в консоли разработчика появляются ошибки ответа 419.

Как в CentOs (Linux) заархивировать директорию

Работа с архивами — практически ежедневная задача при работе под любой операционной системой. В CentOS и других Linux-системах это создать архив удобнее всего с помощью команды: tar -cvzf folder.tar.gz folder В процессе исполнения будет выводиться лог с обработанными файлами, что весьма удобно для отслеживания процесса архивации. Извлечение файлов можно произвести […]

Как в PHP получить имя класса без неймспейса

Если вы любите баловаться с наследованием классов, то рано или поздно сталкиваетесь с задачей когда нужно узнать имя класса в контексте которого выполняется тот или иной код. Однако, стандартные методы по типу использования магической константы __CLASS__ или get_class($this) возвращают имя класса с его полным неймспейсом. Т.е. вы хотите получить LockHandler, но […]

Как на PHP перебрать все комбинации значений нескольких массивов

Достаточно интересная и не самая редкая задача. Допустим, есть несколько массивов с разными значениями, например: массив городов, возрастов, полов и т.п. Нужно вызвать некую функцию передав ей в качестве аргументов все возможные комбинации значений городов + возрастов + полов. Фактически это задача циклической итерации всех значений всех массивов. Неискушённый программист […]

Удивительные трюки с foreach в PHP

С версии PHP 5.5 появилась очень интересная фича: распаковка вложенных массивов с помощью list(). Дословно на русском описание этой фичи звучит как возможность обхода массива массивов с распаковкой вложенного массива в переменные цикла, передав list() в качестве значения. Что всё это значит? Оказывается больше не нужно писать так: foreach($users as $user) […]

Как в Nginx запретить отвечать на любой домен

У веб-сервера Nginx есть один фатальный недостаток — он пытается ответить на любой входящий запрос. Причём он отвечает даже на те запросы, в host-заголовке которых указан домен, который не был сконфигурирован! В этом случае Nginx выбирает первую попавшуюся секцию server и отдаёт ей запрос, даже если внутри этой секции значения […]

Как в Symfony 3.4 заменить стандартное сообщение об ошибке

Возникла задача — заменить стандартное сообщение об ошибке на что-то более дружелюбное и понятное для пользователя. Например, если для текущего URI не определён роутинг — то выводить json: {«status»:»error»,»message»:»Unknown endpoint.»} Вместо этого кирпичного безумия: Решить эту задачу можно с помощью определения собственного обработчика событий.

Как обновить библиотеки в файле composer.json до актуальных версий

Бывают такие ситуации, когда нужно внести правки в какой-либо проект, в который никто не заглядывал уже полгода-год. И конечно же большая часть библиотек в таких проектах уже не самых последних версий. И по закону подлости часть библиотек за это время успевает зарелизить новые мажорные версии, у которых в зависимостях также […]