[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: timeout в nginx
GRean
Всем привет!

Есть сайт, который работает на nginx + apache.
Есть скрипты на сайте, которые парсят в бд xls файл. В xls много строк, поэтому время работа скриптов не укладывается в лимит, отведенный сервером, по дефолту ( вроде как 30 сек).

В nginx не представляется ни какой возможности внести изменений в конфигурацию. Скрипт написан не мной, поэтому оптимизацию хотелось бы сделать в последнюю очередь.

Писал в службу поддержки хостинга, там ответили следующее:

Цитата
Изменить время ожидания на front end веб-сервере nginx не представляется возможным. Но мы можем подсказать решение проблемы иным способом.
Вам необходимо в скрипте внести некоторые изменения, которые позволят посылать запрос от back end веб-сервера Apache на nginx. Это можно
реализовать с помощью элементарной функции php "echo", которая должна выводить на стандартное устройство вывода любое сообщение хотя бы
каждые 30 секунд. Спасибо за сотрудничество.


Как мне посылать запросы эти? какой командой? Ведь скрипт сначала выполняется целиком на сервере, только потом отдает ответ. Подскажите плииз способы реализации?
Visman
Разбивай задачу на куски, которые выполняются менее 30 сек и выполняй ее в несколько этапов.
Так например форумы обновляются со старой версии движка на новую.
Игорь_Vasinsky
а это не поможет?
в начале кода?

с нихами не работал, но тут же и апач

set_time_limit(0);


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
VELIK505
nginx.conf покажи
GRean
Цитата
Разбивай задачу на куски, которые выполняются менее 30 сек и выполняй ее в несколько этапов.
Так например форумы обновляются со старой версии движка на новую.


Разобью, если не будет других вариантов решения.

Цитата
set_time_limit(0);

Апач то поймет эту установку. nginx передаст запрос апачу, но не дождется ответа от апача, так как у nginx выставлен лимит на ответ.

Цитата
nginx.conf


В том то и дело, не доступен для редактирования.
Даже в тех поддержке советуют обходные пути использовать, просто я не понимаю как продлить жизнь скрипту, отправляя запросы.
VELIK505
Цитата (GRean @ 11.03.2012 - 04:00)
Цитата
nginx.conf

В том то и дело, не доступен для редактирования.
Даже в тех поддержке советуют обходные пути использовать, просто я не понимаю как продлить жизнь скрипту, отправляя запросы.

Чё???? сказки не надо тут лечить. не может такого быть.
через чё смотришь его?
walerus
GRean
Цитата
Есть скрипты на сайте, которые парсят в бд xls файл. В xls много строк...

выводи через каждую обработку строки
echo ".\n"; flush();
ну или через n количество строк, если строки маленькие и обрабатываются быстро, допустим через каждые 10ть строк, смысл в том, что бы nginx, дать понять, что скрипт еще работает. Сталкивался с такой же проблемой, ехо помогало, либо же, писать прогресс работы в файл или в базу (куда тебе удобнее), и стартовать скрипт каждую минуту кроном, что по моему будет немного коряво )), лучше уже echo использовать и да, нужно примерно знать буфер обмена nginx, т.к. бывает еще такое, что точек или иных символов мало, для вывода буфера на экран, тогда приходится извращаться и заполнять всякой ерундой выдачу на экран. Еще попробуй использовать multiCurl для парсинга, если я правильно понял про парсинг, позволит более массово получать результаты.
Игорь_Vasinsky
Цитата
echo ".\n"; flush();

это из практики?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
ADiel
я бы запускал демона по крону, который проверял бы в бд наличие задач и выполнял их. Большинство хостеров предоставляют php cli через cron, если не все. Для отображения результатов в реалтайме можно писать в базу прогресс выполнения задачи и вытаскивать ajax-ом

_____________
Ищи меня тут (ilyaplot)
GRean
Цитата (walerus @ 11.03.2012 - 17:14)
GRean
Цитата
Есть скрипты на сайте, которые парсят в бд xls файл. В xls много строк...

выводи через каждую обработку строки
echo ".\n"; flush();
ну или через n количество строк, если строки маленькие и обрабатываются быстро, допустим через каждые 10ть строк, смысл в том, что бы nginx, дать понять, что скрипт еще работает. Сталкивался с такой же проблемой, ехо помогало, либо же, писать прогресс работы в файл или в базу (куда тебе удобнее), и стартовать скрипт каждую минуту кроном, что по моему будет немного коряво )), лучше уже echo использовать и да, нужно примерно знать буфер обмена nginx, т.к. бывает еще такое, что точек или иных символов мало, для вывода буфера на экран, тогда приходится извращаться и заполнять всякой ерундой выдачу на экран. Еще попробуй использовать multiCurl для парсинга, если я правильно понял про парсинг, позволит более массово получать результаты.

Спасибо за наводку!
Попробую писать в файл результаты во время работы скрипта

Цитата (VELIK505)
Чё???? сказки не надо тут лечить. не может такого быть.
через чё смотришь его?


смотрю в filezille.

В filezille этого файла вообще не увидеть, а в winSCP видит этот файл, а открыть не может, нет прав. :(
VELIK505
ты через файл зиллу решил найти конфиг nginx-а?
качаем это и заходим через этоРАЗ и в этом заходим в это:
ДВА
больше ничего сказать не могу.
GRean
Цитата (VELIK505 @ 12.03.2012 - 02:58)
ты через файл зиллу решил найти конфиг nginx-а?
качаем это и заходим через этоРАЗ и в этом заходим в это:
ДВА
больше ничего сказать не могу.

Спасибо, попробую твой вариант.
GRean
Не получается редактировать nginx конфиг у agava. Сами хостеры даже об этом говорят.
Подскажите еще какие нибудь возможности пожалуйста?
ADiel
Я подсказал уже

_____________
Ищи меня тут (ilyaplot)
npocToNIK
смените хостера

_____________
Всё учу FreeBSD..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.