Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запуск скрипта через exec без зависания браузера

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Nyam
Отправлено: 02 Февраля, 2018 - 16:13:51
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Здравствуйте, столкнулся с небольшой проблемой при запуске функции, которая должна выполняться в фоне после определенного действия пользователя. Так как по завершению функции от неё не нужны никакие данные и тд., хотелось бы чтобы пользователь во время выполнения функции мог без проблем пользоваться сайтом. Фоновый запуск функции реализовал через exec('/usr/bin/php test.php &'); но при этом браузер по прежнему ждет завершения функции и не дает пользователю нормально использовать сайт.

Прошу вас подсказать как сделать выполнение полностью в фоне для пользователя.

Заранее всем спасибо.
 
 Top
Мелкий Супермодератор
Отправлено: 02 Февраля, 2018 - 18:38:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




С веба кладёте задачу в очередь pgq, gearman, rabbitmq или чего ещё больше нравится.
Кроном или написанным демоном вычитываете задачу, выполняете, затем хватаете следующую и выполняете

Такой подход нормально переживает пики активности вместо DoS всего сервиса.


-----
PostgreSQL DBA
 
 Top
Nyam
Отправлено: 02 Февраля, 2018 - 20:05:39
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Мелкий пишет:
С веба кладёте задачу в очередь pgq, gearman, rabbitmq или чего ещё больше нравится.
Кроном или написанным демоном вычитываете задачу, выполняете, затем хватаете следующую и выполняете

Такой подход нормально переживает пики активности вместо DoS всего сервиса.


А возможно сделать без крона ?
 
 Top
Sail
Отправлено: 03 Февраля, 2018 - 14:40:56
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Nyam, например, можно инициировать выполнение той самой функции через ajax-запрос от клиента.
Или отправить клиенту (браузеру) header("location...") и спокойно продолжать дальше выполнение скрипта (той самой функции).
 
 Top
LIME
Отправлено: 03 Февраля, 2018 - 18:58:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Sail пишет:
Nyam, например, можно инициировать выполнение той самой функции через ajax-запрос от клиента.
Мелкий пишет:
Такой подход нормально переживает пики активности вместо DoS всего сервиса.
это замечание к тс относится
всеже асинхронная обработка имеет свои плюсы
но есть и минусы
как говорится нет очереди нет проблем
 
 Top
Nyam
Отправлено: 04 Февраля, 2018 - 15:05:16
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Sail пишет:
Nyam, например, можно инициировать выполнение той самой функции через ajax-запрос от клиента.
Или отправить клиенту (браузеру) header("location...") и спокойно продолжать дальше выполнение скрипта (той самой функции).


Как я понимаю header("location...") будет выполняться только уже после exec и в итоге ничего не изменится?
(Добавление)
LIME пишет:
Sail пишет:
Nyam, например, можно инициировать выполнение той самой функции через ajax-запрос от клиента.
Мелкий пишет:
Такой подход нормально переживает пики активности вместо DoS всего сервиса.
это замечание к тс относится
всеже асинхронная обработка имеет свои плюсы
но есть и минусы
как говорится нет очереди нет проблем


Нагрузка на сервер не будет, так как если уже данный скрипт запущен, другие пользователи не могут его запускать, пока не выполнится предыдущий.
 
 Top
Sail
Отправлено: 04 Февраля, 2018 - 15:29:33
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Nyam пишет:
Как я понимаю header("location...") будет выполняться только уже после exec и в итоге ничего не изменится?

Наоборот.
 
 Top
Nyam
Отправлено: 05 Февраля, 2018 - 22:05:55
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Sail пишет:
Nyam пишет:
Как я понимаю header("location...") будет выполняться только уже после exec и в итоге ничего не изменится?

Наоборот.


Спасибо большое!
 
 Top
Nyam
Отправлено: 10 Февраля, 2018 - 14:34:31
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Sail пишет:
Nyam пишет:
Как я понимаю header("location...") будет выполняться только уже после exec и в итоге ничего не изменится?

Наоборот.


Проверил, оказалось что не работает, по прежнему браузер блочится.
 
 Top
Nyam
Отправлено: 11 Февраля, 2018 - 20:44:26
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




Больше нету идей как можно решить проблему ? (
 
 Top
LIME
Отправлено: 12 Февраля, 2018 - 03:55:19
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Nyam пишет:

Проверил, оказалось что не работает, по прежнему браузер блочится.

вот это новость
Nyam пишет:
Больше нету идей как можно решить проблему ? (
асинхронная обработка
мелкого слушай
вот что тебе непонятно?
хочешь и рыбку сьесть и рыбку сьесть?
 
 Top
Nyam
Отправлено: 13 Февраля, 2018 - 05:05:27
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Июль 2014  


Помог: 0 раз(а)




LIME пишет:
Nyam пишет:

Проверил, оказалось что не работает, по прежнему браузер блочится.

вот это новость
Nyam пишет:
Больше нету идей как можно решить проблему ? (
асинхронная обработка
мелкого слушай
вот что тебе непонятно?
хочешь и рыбку сьесть и рыбку сьесть?


Нет, хочу рыбку есть и компотом запивать.
При обращении к скрипту через exec а перед этим прописания хедера, по прежнему отвисает страница в браузере только после завершения выполнения скрипта, прописанного в exec.
 
 Top
Sail
Отправлено: 13 Февраля, 2018 - 21:07:44
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




Nyam пишет:
Больше нету идей как можно решить проблему ? (

Есть, конечно. Всё тот-же header. Только чуть другой: рецепт.
 
 Top
arbuzmaster
Отправлено: 19 Февраля, 2018 - 15:35:28
Post Id


Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Май 2017  


Помог: 0 раз(а)




А что мешает вывести результат в далекое никуда? Радость
1. exec('/usr/bin/php test.php >/dev/null');
2.exec('wget -O /dev/null -q http://localhost/test.php >/dev/null &');
И пусть он там выполняется до потери пульса!

(Отредактировано автором: 19 Февраля, 2018 - 18:48:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB