Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Сравнение изображений на PHP

03.08.2018 | Категория: Web-мастеру и не только | Автор: ManHunter

Сравнение изображений на PHP

На работе возникла интересная задача. В базе имеются объекты, к каждому из которых привязано некоторое количество изображений. Проблема в том, что некоторые изображения дублируются, т.к. одно и то же исходное изображение было подгружено к объекту несколько раз. Дополнительная сложность заключается в том, что дубли могут отличаться по времени загрузки, а также быть в разном формате и с разным сжатием. То есть визуально их можно считать идентичными, а файлы по своим параметрам абсолютно разные. Объектов и изображений достаточно много, просмотреть каждый и обработать вручную нереально. Задача заключалась в автоматизации этого процесса.

Читать статью целиком »
Просмотров: 4158 | Комментариев: 7

Производственный календарь на PHP

25.01.2018 | Категория: Web-мастеру и не только | Автор: ManHunter

Производственный календарь на PHP

Производственный календарь - это календарь, составленный с учетом выходных дней и праздников, с помощью которого составляют рабочие графики, определяют число рабочих часов за месяц и начисляют заработную плату. Конечно, этим его функции не ограничиваются, например, ваш сервис может отправлять какие-нибудь уведомления только по будним дням, или наоборот, выполнять массированную синхронизацию по выходным дням, когда нагрузка на него минимальная. Вся сложность тут в получении списка рабочих и выходных дней. Для своих проектов в качестве источника информации я использую сайт calend.ru.

Читать статью целиком »
Просмотров: 3543 | Комментариев: 1

Как удалить BOM из файлов

24.12.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Маркер последовательности байтов, он же BOM - специальный символ Юникода, который вставляется в начало текстового файла для обозначения того, что в этом файле используется Юникод. Согласно спецификации, использование этого символа не является обязательным, однако оно широко распространено, что иногда приводит к проблемам при обработке данных.

Так, к примеру, однажды я столкнулся с ситуацией, когда от сторонней системы передавался файл в формате JSON, а я у себя должен был извлечь поступившие данные при помощи стандартной функции PHP json_decode. Файл передается и принимается успешно, на первый взгляд имеет абсолютно корректную структуру, правильно открывается в браузере и блокноте, но функция декодирования все равно возвращает ошибку, что данные некорректные. Сейчас я не смогу сказать, сколько времени потратил на выяснение причины ошибки, пока, наконец, не решил открыть файл при помощи HEX-редактора. Оказалось, что всему виной был маркер BOM, из-за которого функция json_decode не могла корректно раскодировать файл.

Для решения проблемы я быстренько нарисовал вот такую функцию в несколько строчек:
  1. // Функция удаления BOM из потока данных
  2. function remove_BOM($data) {
  3.     // Маркер UTF-8
  4.     if (substr($data,0,3)=="\xEF\xBB\xBF") {
  5.         return substr($data,3);
  6.     }
  7.     // Маркер UTF-16
  8.     elseif (substr($data,0,2)=="\xFF\xFE") {
  9.         return substr($data,2);
  10.     }
  11.     else {
  12.         return $data;
  13.     }
  14. }
При получении файла данные сперва обрабатывались при помощи этой функции и только после этого отправлялись на декодирование в json_decode.

Просмотров: 2863 | Комментариев: 1

Установка ImageMagic для PHP5 под Windows

04.12.2017 | Категория: Web-мастеру и не только | Автор: ManHunter

Установка ImageMagic для PHP5 под Windows

По умолчанию PHP идет с библиотекой для обработки изображений GD. Удобная и мощная штука, которой хватает для большинства задач. Но иногда ее функций становится недостаточно. В этом случае надо установить дополнительную библиотеку ImageMagic. Вот и у меня на рабочем проекте возникла необходимость работать с графическими файлами в формате SVG. Продакшен крутится на CentOS, а рабочая машина под Windows. Везде пришлось устанавливать ImageMagic. Под CentOS все делается парой команд, а вот под Windows пришлось повозиться.

Читать статью целиком »
Просмотров: 1528 | Комментариев: 0

Асинхронный запуск PHP-скриптов

13.10.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Для сбора и обработки различной информации на сервере приходится запускать некоторое количество скриптов-автоматов. Работа некоторых из них может занимать достаточно продолжительное время, поэтому приходится использовать параллельный запуск сразу нескольких процессов. В PHP нет штатных функций для асинхронного запуска процессов, для этого я применяю вот такой нехитрый трюк с использованием cURL.
  1. // Адрес вызываемого скрипта и параметры его запуска
  2. $url='http://example.com/process.php';
  3. $param1='dummy';
  4. $param2='foobar';
  5.  
  6. $ch=curl_init();
  7. curl_setopt($chCURLOPT_URL$url);
  8. curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
  9. curl_setopt($chCURLOPT_HEADERFALSE);
  10. curl_setopt($chCURLOPT_POSTTRUE);
  11. curl_setopt($chCURLOPT_POSTFIELDS'param1='.$param1.'&param2='.$param2);
  12. // Не ждем результат выполнения запускаемого скрипта, выполнение
  13. // основного процесса прекращается по таймауту
  14. curl_setopt($chCURLOPT_TIMEOUT3);
  15. curl_exec($ch);
  16. curl_close($ch);
  17. // Обработчик запущен, можно переходить к запуску следующего процесса
В приведенном примере вызываемому скрипту передаются параметры в двух переменных POST param1 и param2.

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

Просмотров: 2509 | Комментариев: 0

01 ... 06 07 08 09 10 11 12 ... 24
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 3 (0.0051 сек.) / Память: 4.5 Mb
Наверх