Blog. Just Blog

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

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: 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.

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

Поделиться ссылкой ВКонтакте
Просмотров: 2512 | Комментариев: 0

Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 2 (0.0047 сек.) / Память: 4.5 Mb
Наверх