Blog. Just Blog

Web-мастеру и не только

Полезные решения для Web-мастеров
Web-мастеру и не только - RSS-канал Web-мастеру и не только - Карта сайта

Асинхронный запуск 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.

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

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

Скрипт быстрого выбора для элемента SELECT

22.09.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Небольшой вспомогательный скрипт на JavaScript, который облегчает работу с выпадающими списками. Суть его в том, что рядом с элементом select создается текстовое поле. При вводе фрагмента строки в это поле, выпадающий список автоматически устанавливается на строку, в которой этот фрагмент найден. Это заметно упрощает работу с формами, где есть длинные выпадающие списки. Форма остается прежней, никаких кастомных модификаций не требуется:
  1. <div>
  2.     <select>
  3.         <option value="">---</option>
  4.         <option value="1">Yellow Banana</option>
  5.         <option value="2">Red Apple</option>
  6.         <option value="3">Green Leaf</option>
  7.         <option value="4">Some strange</option>
  8.     </select>
  9.  
  10.     <input type="text" onkeyup="selecthelper(event);">
  11. </div>
Важно, чтобы вспомогательное поле ввода находилось после выпадающего списка, но обязательно на одном уровне иерархии с ним в DOM-структуре. Вы можете, в случае необходимости, доработать скрипт-обработчик под ваши нужды. Верстка остается валидная, количество выпадающих списков и полей ввода в форме может быть любым.

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

Расстояние между двумя точками на карте

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

Расстояние между двумя точками на карте

Одна из задач, с которой могут столкнуться разработчики - вычисление расстояния между двумя точками на карте. Это может быть определение объектов, которые находятся вблизи какой-то конкретной точки, оценка времени перемещения из одной точки в другую, вариантов применения может быть много.

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

Выборка родительских элементов в древовидном массиве

18.08.2017 | Категория: Web-мастеру и не только | Автор: ManHunter
Создавать многомерный массив из одномерного массива с указателями на родительские элементы мы уже умеем. Но может возникнуть другая задача: зная ID элемента, надо получить все его родительские элементы, причем уровень вложенности может быть абсолютно любым. Пример из практики. В базе хранится список стран и регионов, перелинкованный через указатели на родительские элементы. Если его развернуть в многомерный массив, то получится примерно следующее:
  1. $regions=array(
  2.     1=>array(
  3.         'name'=>'Россия',
  4.         'parent'=>0,
  5.         'child'=>array(
  6.             2=>array(
  7.                 'name'=>'Москва и Московская область',
  8.                 'parent'=>1,
  9.                 'child'=>array(
  10.                     3=>array(
  11.                         'name'=>'Москва',
  12.                         'parent'=>2,
  13.                         'child'=>array(
  14.                         ),
  15.                     ),
  16.                     5=>array(
  17.                         'name'=>'Московская область',
  18.                         'parent'=>2,
  19.                         'child'=>array(
  20.                             6=>array(
  21.                                 'name'=>'Дмитровский район',
  22.                                 'parent'=>6,
  23.                                 'child'=>array(
  24.                                     7=>array(
  25.                                         'name'=>'Дмитров',
  26.                                         'parent'=>6,
  27.                                         'child'=>array(),
  28.                                     ),
  29.                                     9=>array(
  30.                                         'name'=>'Яхрома',
  31.                                         'parent'=>6,
  32.                                         'child'=>array(),
  33.                                     ),
  34.                                 ),
  35.                             ),
  36.                         ),
  37.                     ),
  38.                 ),
  39.             ),
  40.             4=>array(
  41.                 'name'=>'Пермский край',
  42.                 'parent'=>1,
  43.                 'child'=>array(
  44.                     8=>array(
  45.                         'name'=>'Пермь',
  46.                         'parent'=>4,
  47.                         'child'=>array(),
  48.                     ),
  49.                     10=>array(
  50.                         'name'=>'Соликамск',
  51.                         'parent'=>4,
  52.                         'child'=>array(),
  53.                     ),
  54.                     11=>array(
  55.                         'name'=>'Кунгур',
  56.                         'parent'=>4,
  57.                         'child'=>array(),
  58.                     ),
  59.                 ),
  60.             ),
  61.         ),
  62.     ),
  63. );
Есть некие объекты, привязанные к региону по его ID. Как получить список всех вышестоящих регионов для конкретного объекта?

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

Сумма прописью на PHP

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

Сумма прописью на PHP

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

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

prev 01 ... 06 07 08 09 10 11 12 ... 35 next
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2021
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 2 (0.0023 сек.) / Память: 4.75 Mb
Наверх