
Быстрый поиск
Введите фрагмент названия статьи для поиска
Производственный календарь на PHP
25.01.2018 | Категория: Web-мастеру и не только | Автор: ManHunter

Производственный календарь на PHP
Производственный календарь - это календарь, составленный с учетом выходных дней и праздников, с помощью которого составляют рабочие графики, определяют число рабочих часов за месяц и начисляют заработную плату. Конечно, этим его функции не ограничиваются, например, ваш сервис может отправлять какие-нибудь уведомления только по будним дням, или наоборот, выполнять массированную синхронизацию по выходным дням, когда нагрузка на него минимальная. Вся сложность тут в получении списка рабочих и выходных дней. Для своих проектов в качестве источника информации я использую сайт calend.ru.
Читать статью целиком »
Просмотров: 4120 | Комментариев: 1
Как удалить BOM из файлов
24.12.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Маркер последовательности байтов, он же BOM - специальный символ Юникода, который вставляется в начало текстового файла для обозначения того, что в этом файле используется Юникод. Согласно спецификации, использование этого символа не является обязательным, однако оно широко распространено, что иногда приводит к проблемам при обработке данных.Так, к примеру, однажды я столкнулся с ситуацией, когда от сторонней системы передавался файл в формате JSON, а я у себя должен был извлечь поступившие данные при помощи стандартной функции PHP json_decode. Файл передается и принимается успешно, на первый взгляд имеет абсолютно корректную структуру, правильно открывается в браузере и блокноте, но функция декодирования все равно возвращает ошибку, что данные некорректные. Сейчас я не смогу сказать, сколько времени потратил на выяснение причины ошибки, пока, наконец, не решил открыть файл при помощи HEX-редактора. Оказалось, что всему виной был маркер BOM, из-за которого функция json_decode не могла корректно раскодировать файл.
Для решения проблемы я быстренько нарисовал вот такую функцию в несколько строчек:
Code (PHP) : Убрать нумерацию
- // Функция удаления BOM из потока данных
- function remove_BOM($data) {
- // Маркер UTF-8
- if (substr($data,0,3)=="\xEF\xBB\xBF") {
- return substr($data,3);
- }
- // Маркер UTF-16
- elseif (substr($data,0,2)=="\xFF\xFE") {
- return substr($data,2);
- }
- else {
- return $data;
- }
- }
Просмотров: 3342 | Комментариев: 1
Установка ImageMagic для PHP5 под Windows
04.12.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Установка ImageMagic для PHP5 под Windows
По умолчанию PHP идет с библиотекой для обработки изображений GD. Удобная и мощная штука, которой хватает для большинства задач. Но иногда ее функций становится недостаточно. В этом случае надо установить дополнительную библиотеку ImageMagic. Вот и у меня на рабочем проекте возникла необходимость работать с графическими файлами в формате SVG. Продакшен крутится на CentOS, а рабочая машина под Windows. Везде пришлось устанавливать ImageMagic. Под CentOS все делается парой команд, а вот под Windows пришлось повозиться.
Читать статью целиком »
Просмотров: 1844 | Комментариев: 0
Асинхронный запуск PHP-скриптов
13.10.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Для сбора и обработки различной информации на сервере приходится запускать некоторое количество скриптов-автоматов. Работа некоторых из них может занимать достаточно продолжительное время, поэтому приходится использовать параллельный запуск сразу нескольких процессов. В PHP нет штатных функций для асинхронного запуска процессов, для этого я применяю вот такой нехитрый трюк с использованием cURL.Code (PHP) : Убрать нумерацию
- // Адрес вызываемого скрипта и параметры его запуска
- $url='http://example.com/process.php';
- $param1='dummy';
- $param2='foobar';
- $ch=curl_init();
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
- curl_setopt($ch, CURLOPT_HEADER, FALSE);
- curl_setopt($ch, CURLOPT_POST, TRUE);
- curl_setopt($ch, CURLOPT_POSTFIELDS, 'param1='.$param1.'¶m2='.$param2);
- // Не ждем результат выполнения запускаемого скрипта, выполнение
- // основного процесса прекращается по таймауту
- curl_setopt($ch, CURLOPT_TIMEOUT, 3);
- curl_exec($ch);
- curl_close($ch);
- // Обработчик запущен, можно переходить к запуску следующего процесса
При таком режиме запуска возникает небольшая проблема с получением обратной связи от запущенных скриптов. Я решил ее просто: результаты записываются в лог-файл и в специальную таблицу базы данных. Анализом результатов занимаются следующие обработчики, но это уже совсем другая история.
Просмотров: 2914 | Комментариев: 0
Расстояние между двумя точками на карте
27.08.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Расстояние между двумя точками на карте
Одна из задач, с которой могут столкнуться разработчики - вычисление расстояния между двумя точками на карте. Это может быть определение объектов, которые находятся вблизи какой-то конкретной точки, оценка времени перемещения из одной точки в другую, вариантов применения может быть много.
Читать статью целиком »
Просмотров: 4323 | Комментариев: 2


