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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2794 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБыстрая индексация страниц сайта и обратных ссылок - 2Index
37 2Index 6586 15.4.2024, 16:17
автор: 2Index
Горячая тема (нет новых ответов) Странный трафик на сайте длительное время
33 TABAK 8706 12.4.2024, 5:56
автор: Skyworker
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыSiteAnalyzer - бесплатная программа для аудита и анализа сайта
77 Chaser 74203 9.4.2024, 11:36
автор: Chaser
Открытая тема (нет новых ответов) Нужен кодер, чтобы пофиксить ошибку Wordpress после переноса сайта
0 Alex-777 810 7.4.2024, 18:05
автор: Alex-777


 



RSS Текстовая версия Сейчас: 18.4.2024, 8:03
Дизайн