Иногда при обработке с помощью 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’);
Автор: editor
Что не так с функцией 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 […]
Как редактировать crontab через nano
Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для крона по-умолчанию в CentOS.
Вачдог по-быстрому
Бывают ситуации, когда что-то идёт не так и нужно по-быстрому запилить килялку чего либо и как можно скорее вернуться к выполнению основной задачи. Типичная ситуация: плодятся процессы, которые никто не прибивает, что приводит к утечке ресурсов и тормозам на всём сервере. Самым быстрым способом будет мониторинг количества процессов и рестарту […]