RoadRunner: PHP не создан, чтобы умирать, или Golang спешит на помощь

За последние годы PHP сильно продвинулся вперёд: улучшился сборщик мусора, повысился уровень стабильности — сегодня на PHP можно без особых проблем писать демоны и долгоживущие скрипты. Это позволило Spiral Scout пойти дальше: RoadRunner, в отличие от PHP-FPM, не очищает память между запросами, что даёт дополнительный выигрыш в производительности (хотя этот подход и  усложняет процесс разработки). Мы сейчас экспериментируем с этим инструментом, но у нас пока нет результатов, которыми можно было бы поделиться. Чтобы ждать их было веселее, публикуем перевод анонса RoadRunner от Spiral Scout. Подход из статьи нам близок: при решении своих задач мы тоже чаще всего используем связку PHP и Go, получая преимущества от обоих языков и не отказываясь от одного в пользу другого. В последние десять лет мы создавали приложения и для компаний из списка Fortune 500, и для бизнеса с аудиторией не более 500 пользователей. Всё это время наши инженеры разрабатывали бекенд преимущественно на PHP. Но два года назад кое-что сильно повлияло не только на производительность наших продуктов, но и на их масштабируемость — мы ввели Golang (Go) в наш стек технологий. Почти сразу мы обнаружили, что Go позволяет нам создавать более крупные приложения с увеличением производительности до 40 раз. С помощью него мы смогли расширять существующие продукты, написанные на PHP, улучшая их благодаря комбинации преимуществ обоих языков. Мы расскажем, как связка Go и PHP помогает решать реальные задачи разработки и как она превратилась для нас в инструмент, способный избавить от части проблем, связанных с моделью «умирания» PHP. (далее…)

Как в Linux консоли добавить в файл сразу несколько строк

Тоже распространённая задача — вставить в файл из консоли сразу несколько строк. Но есть нюанс, в зависимости от выбора способа вставки командный интерпретатор будет, пытаться заменить переменные на их значения, или нет. Т.е. если в строке для вставки присутствует символ $, то нужно выбрать правильный способ для описания команды. (далее…)

Примеры команды sed для работы со строками файлов

Sed умеет очень круто обрабатывать файлы. Давайте рассмотрим несколько примеров. Например, нужно вставить новую строку в файл после определённой линии:

sed '3 a new line content' my.txt
Данная команда добавит новую строку в файл my.txt с содержимым new line content усразу после текущей третей строки в файле. (далее…)

Как в Linux вывести файл с нумерацией строк

В Linux есть всем знакомая команда cat для вывода содержимого файла. Но как быть, если нужно отобразить тот же файл, но чтобы пронумеровать каждую строку по порядковому номеру? Cat умеет и это:

cat -n my.file
(далее…)

Как в Guzzle указать версию TLS/SSL

Иногда нужно делать HTTPS запросы к внешним ресурсам с нестандартными параметрами подключения. Т.к. библиотека Guzzle является обёрткой над Curl, то делается это так: $this->guzzle = new Client(['timeout' => 5, 'base_uri' => $uri, 'curl' => [ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_3 ]]);

Composer PHP Fatal error: Allowed memory size

Пакетный менеджер Composer внезапно может удивить и вместо установки или обновления пакетов выдать сообщение об ошибке:

PHP Fatal error: Allowed memory size of XXXXXX bytes exhausted <...>
Да, композер беспощадно потребляет ОЗУ и не влезает в установленные лимиты. Обойти можно следующими способами: (далее…)

Как в PHP декодировать содержимое email-письма

При чтении письма из электронного ящика при помощи функции imap_body его содержимое будет частично закодировано. Раскодировать его достаточно просто, нужно лишь воспользоваться функцией quoted_printable_decode. В некоторых сложных случаях потребуется дополнительное декодирование кодировки: (далее…)

Как подсчитать доход с займов по кредитным лимитам в сервисе Webmoney Debt

Так случилось, что в разделе «Займы, которые я выдал» (https://debt.web.money/Credits.aspx) сервиса Webmoney Debt отсутствует экспорт отчёта. А вам как назло хочется получить все данные с этой страницы в виде Excel-таблицы и провести аналитику. К счастью это можно сделать, выполнив на странице JavaScript сценарий. В сервисе используется библиотека jQuery и сделать это будет легко и просто. Привожу пример скрипта для подсчёта суммы выданных займов, суммы для возврата и разницы между ними: (далее…)

Pipe Viewer: prograssbar для консольных утилит в Linux

Рассмотрим сценарий, когда вы только начали копировать очень большой файл с флэш-накопителя на вашей системе Linux с помощью командной строки. Учитывая, что данный файл является тяжелым, вы знаете, процесс займет некоторое время, и поэтому вы начинаете делать другую работу. Через некоторое время вы вернулись, только чтобы увидеть, что команда все еще работает. Вы сами решаете, дать продолжатся операции копирования еще некоторое время. Через некоторое время, когда вы посмотрите еще раз, вы наблюдаете, что ничего не изменилось, то есть процесс копирования не закончился, и команда не показало ошибку. (далее…)


Любишь мемасики?

Подпишись на мой телеграм-канал!

Открыть
Закрыть