Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> заголовок завершения 
:(
    Опции темы
bars80080
Дата 27.2.2010, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

есть ли возможность после отправки результата на вывод, отправить какой-нибудь заголовок завершения, а самому продолжить выполнение задачи?

PM MAIL WWW   Вверх
IZ@TOP
Дата 27.2.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



bars80080, а чем не устраивают задачи по крону? Устройте очередь обработки.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
bars80080
Дата 27.2.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



не, тут фишка в том, что всё равно это надо сделать. не через какой-то промежуток времени, а желательно сразу.

неужели придётся дополнительно записывать в планировщик дополнительное время срабатывания скрипта, через секунду? это мягко говоря через одно место
PM MAIL WWW   Вверх
sTa1kEr
Дата 27.2.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Я вижу 3 способа для решения этой задачи.

Простой способ, путем отправки контента и заголовка Connection: close http://ru.php.net/manual/en/function.regis...ction.php#92959
Минус этого варианта в том, что не все браузеры будут корректно отрабатывать такую ситуацию.

При использовании PHP FPM, есть еще более простой способ и при этом полностью кроссбраузерный. http://php-fpm.org/wiki/Features#fastcgi_f...h_request.28.29
Соответственно минус такого метода, это обязательное наличие менеджера процессов PHP FPM

И последний наиболее сложный, это написать демона (можно и на PHP) который будет обрабатывать задачи в background'е.
PM MAIL   Вверх
gcc
Дата 27.2.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



bars80080, обычный fork? чтобы часть вашей процедуры "процедура занимает какое-то время," запустить в другом не завсимом процессе...


как-то так примерно:

Код

if ($child = fork()) {

procedur();

} {


}


Это сообщение отредактировал(а) gcc - 27.2.2010, 23:16
PM WWW ICQ Skype GTalk Jabber   Вверх
bars80080
Дата 27.2.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(gcc @  27.2.2010,  22:14 Найти цитируемый пост)
обычный fork? 

не знаю, что такое "обычный форк". можно подробнее или ссылочку?


Цитата(sTa1kEr @  27.2.2010,  20:53 Найти цитируемый пост)
Простой способ, путем отправки контента и заголовка Connection: close http://ru.php.net/manual/en/function.regis...ction.php#92959
Минус этого варианта в том, что не все браузеры будут корректно отрабатывать такую ситуацию.

При использовании PHP FPM, есть еще более простой способ и при этом полностью кроссбраузерный. http://php-fpm.org/wiki/Features#fastcgi_f...h_request.28.29
Соответственно минус такого метода, это обязательное наличие менеджера процессов PHP FPM

И последний наиболее сложный, это написать демона (можно и на PHP) который будет обрабатывать задачи в background'е. 

ну, ответа завершения ждёт не браузер, а сервер. я предположил, что он всё же понимает о том, что произошёл конец передачи за счёт какого-то передаваемого кодового слова. вроде как EOF. как я понимаю, эту команду отдаёт сам сервер. а вот отдать её принудительно с помощью пхп?

демон, имхо, тот же крон, только в профиль. то есть овчинка выделки не стоит. менеджер процессов php fpm - покопаю, что там есть на серваке, но не думаю, что там дадут разойтись руке скриптующего. а вот connection close обязательно попробую
PM MAIL WWW   Вверх
gcc
Дата 27.2.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



PM WWW ICQ Skype GTalk Jabber   Вверх
sTa1kEr
Дата 27.2.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Да, можно использовать fork. Несколько дорогое решение, но с поставленной задачей полностью справится.
PM MAIL   Вверх
gcc
Дата 28.2.2010, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: -1
Всего: 17



fork действительно будет новые процессы создавать, возможно лишние, можно сделать клиент-сервер на сокетах или на IPC лучше будет (как писали выше), из скрипта php передавать на сервер и выполнять... если в этой задачи подойдет...

Это сообщение отредактировал(а) gcc - 28.2.2010, 00:39
PM WWW ICQ Skype GTalk Jabber   Вверх
IgorIV
Дата 28.2.2010, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



Получается что при форке создается 3 процесса, один родительский, второй - дочерний - быстро что-то прочитал - отдал - завершился, третий - дочерний - лезет в базу, считает, отправляет, завершается. Теперь и родительский завершается. 3 процесса вместо 1. 

Хотел пересобрать php, попробовать, а pcntl только для cli (по крайней мере так сказал make config)
PM MAIL   Вверх
IgorIV
Дата 20.3.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 7.9.2009

Репутация: 2
Всего: 8



bars80080, тут вот такая штука есть - http://www.php.net/manual/en/book.gearman.php - вроде как по теме. Но я её ещё не пробовал. Буду рад если кто выскажется.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.