X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Зависание сайта во время выполнения скрипта
1nSane
1nSane
Topic Starter сообщение 9.6.2011, 9:35; Ответить: 1nSane
Сообщение #1


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

Отсюда вопрос, КАК ОТВЯЗАТЬ выполнение скрипта от текущей сессии РНР?

З.Ы. Сайт крутится на выделенном сервере с Дебиан 6, так что можно делать все что угодно, пусть даже запуск каких-то процессов юзером. Вопрос только в том, ЧТО и КАК ПРАВИЛЬНО сделать.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 9.6.2011, 10:55; Ответить: maxim_malets
Сообщение #2


Насколько я помню, можно из php апачевского запустить через shell php скрипт, он будет крутиться в процессах, а не под апачем. Останется только реалиовать считывание статуса его выполнения для отображения пользователю.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
1nSane
1nSane
Topic Starter сообщение 9.6.2011, 11:29; Ответить: 1nSane
Сообщение #3


Я примерно о том же думал, чтобы через PHP-PFM запускать, потому как в последнее время начали часто этот скрипт стартовать юзеры и Апач просто уходит в лимит и новые юзеры видят 502ю ошибку от нгинкса, ибо Апач игнорит.

А вот отслеживание статуса... вижу путь через создание темп файла или записи в Мускуле... но, может, есть лучше вариант?..
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 9.6.2011, 13:39; Ответить: maxim_malets
Сообщение #4


Не php-fpm тут не нужен. Просто запускаешь shell команду 'php script.php' ну и параметры ему как-то передаешь. Единственное нужно изучить вопросы безопасности, по дефолту вроде нельзя запускать команды. Альтернативой может быть запуск очень частого крона который будет подхватывать и запускать задачи из очереди.

Статус выполнения лучше через базу, юзеров же много и разных. Лучше врят ли тут придумаешь.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
1nSane
1nSane
Topic Starter сообщение 9.6.2011, 16:07; Ответить: 1nSane
Сообщение #5


ак-то пофиг, могу хоть через wget - хотя нет, тогда через апач будет. Значит РНР. Безопасность - да, тут думать. А вот с параметрами - тут РНР файл в качестве прокладки.

З.Ы. Очень частый крон... нельзя сделать чаще, чем раз в минуту, таких задач у меня порой десяток одновременно стартует (так планировщик реализовал), а тут надо чтоб по велению юзера было.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
maxim_malets
maxim_malets
сообщение 9.6.2011, 16:20; Ответить: maxim_malets
Сообщение #6


Успехов в общем :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 9.6.2011, 18:12; Ответить: ZhukV
Сообщение #7


Я то делаю немного по другому, если нужно сделать огромные задачи, которые требую множество часа и ресурсов.
К примеру парсер каких то огромных рсс лент.
Тогда делаю типа "очередь". И при инициализации скрипта проверяю очередь и делаю то, что на данный момент стоит в очереди.

Если же нужно чтобы он был вечно запущен, тогда можно черед шелл запустить соккет на ПХП, в таком слечае Вы сможете даже контролировать работу скрипта, подключаясь к указаному порту при создании сокета.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
1nSane
1nSane
Topic Starter сообщение 9.6.2011, 18:19; Ответить: 1nSane
Сообщение #8


А можно поподробнее насчет сокетов?

Очередь не катит. Да, это обращение к куче сайтов, юзерам может требоваться одновременно и к разным, организация очереди - не выход, клиенты будут недовольны. Сервер загружен на 1-3% обычно, там Хеон и 4ГБ памяти, вопрос в том что Апач порой "залипать" стал...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZhukV
ZhukV
сообщение 9.6.2011, 18:36; Ответить: ZhukV
Сообщение #9


Вт простые примеры: http://php.su/functions/?cat=sockets
В Вашем примере, его нужно будет просто зацыклить.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 9.6.2011, 20:34; Ответить: alexdrob
Сообщение #10


может просто разбить сркипт на циклы и запускать аяксом с выводом состояния. Смотря что за скрипт. Всё зависит от задачи. Нужно ли обязательно выполнить скрпит до конца, нужен ли какой вывод после выполнения, что если юзер закрыл браузер должен ли скрипт продолжить работать.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Продвижение молодого сайта
30 maxmer 6363 26.3.2024, 21:49
автор: c4p1t4l15t
Открытая тема (нет новых ответов) SEO-текст на главной странице сайта и в категориях
5 boltuk 1352 26.3.2024, 21:43
автор: c4p1t4l15t
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
10 Aloof 2542 24.3.2024, 21:45
автор: Liudmila
Горячая тема (нет новых ответов) Вы тратите собственное время зря?
35 metvekot 2456 19.3.2024, 20:14
автор: MisterBit
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБыстрая индексация страниц сайта и обратных ссылок - 2Index
32 2Index 5811 18.3.2024, 16:33
автор: 2Index


 



RSS Текстовая версия Сейчас: 28.3.2024, 19:46
Дизайн