Как по-быстрому увеличить объём выделяемой памяти для консольного PHP скрипта?

Иногда при обработке с помощью PHP больших и не очень данных, можно словить досадную ошибку посреди выполнения скрипта: PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) Конечно, можно увеличить memory_limit в php.ini или дописать в скрипт: ini_set(‘memory_limit’,’256M’);

Что не так с функцией file_put_contents() в PHP?

Если в кратце, то суть такая: file_put_contents() не атомарен и не гарантирует записи данных файл, а может вообще очистить его содержимое так и не записав новое содержимое. Синтаксический сахар это хорошо. Судя по описанию, функция file_put_contents() идентична последовательным успешным вызовам функций fopen(), fwrite() и fclose(), что влечёт за собой некоторые особенности, связанные с […]

Cлучайные числа с плавающей точкой в PHP

Стандартные библиотеки PHP умеют генерировать только целые случайные числа. Однако, возникают задачи где нужно не целое рандомное число с максимально длинным хвостом, например, в диапазоне от 0 до 1. В таком случае можно воспользоваться таким способом:

Задача о диагонали и площади квадрата

Задача на декомпозицию, формулировка которой может направить по неверному пути. Есть квадрат со сторонами N, например, N = 5. У него есть диагональ, выделенная серым цветом. Нужно найти количество клеток на нижней половине, $cnt = f(N). Не обращайте внимание на рисунок, это просто визуализация для отвлечения внимания.

Что не так с этим скриптом?

Очень крутая задача, в которой не всё так просто, как кажется на первый взгляд. Попробуйте найти в ней 2 логические ошибки. SQL-инъекция здесь служит отвлекающим манёвром. <?php $dest = $_POST[‘destination’]; $result = $_POST[‘data’][‘result’]; $output = «»; if ($dest == ‘file’) {     $file = fopen(‘storage.txt’, ‘a+’);     fwrite($file, $result);     […]

Задача о длине двух строк

Это одна из тех задач, в которых формулировка может сбить человека с толку и направить по неверному пути. Начну с корректной формулировки. В абстрактном языке программирования имеется 2 строковых переменных и нужно найти сумму длин двух строк. И здесь в голову должен придти один и только один единственно правильный и […]

Чистка логов docker-контейнеров

Весь stdout контейнеров докер бережливо сохраняет в файлики. По-дефолту эти логи никак не ротируются и копятся до тех пор, пока не закончится место на диске. Если неизбежное произошло, можно элегантно освободить место на диске следующей командой:

Как в Laravel 5.5 и 5.4 получать select в виде массива, а не объекта

Laravel, как и большинство фреймворков жертвуют производительностью  и потреблением ресурсов ради сомнительных вещей. Как известно, зачастую узким местом приложений становится база данных, фреймворки же это бутылочное горлышко уменьшают до диаметра волоска. По-умолчанию все данные получаемые через фасад DB возвращаются в виде объектов, массива объектов или коллекции объектов, что может до 10 […]

Вачдог по-быстрому

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