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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 504 gateway time-out 
V
    Опции темы
studentigor
Дата 17.10.2012, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет.

Есть парсер. Он по имеющимся логину и паролю авторизируется на неком сайте, и с личного кабинета авторизированого пользователя парсит некие данные.

Данных можнт быть мало, а может быть и много.

Механиз такой. Аякс шлет запрос на сервер, он запускает парсер, он начинает работать. Сначала парсит и расфасовывает все по меделям, потом все скопом встявляет в базу, и в качастве ответа возвращает колличество спаршеных записей.

Так вот, если записей немного, парсер отрабатывает и все нормально возвращается.
Но если их оч много, то происходит следующее. Послался аякс запрос, парсер начал работать, через время он возвращает на аякс ответ "504 gateway time-out" - ошибка, нужное число спаршеных записей не получена,
 при этом сам парсер продолжает работать дальше, и в итоге дорабатывает до конца.

Я на локале, в настройку аякса запихнул время ожидания ответа от сервера - 10 минут(чтобы наверняка). С таким раскладом все нормально отработало и в аякс я получил нужный мне ответ.

Но вот на хостинге этот таймаут ожидания ответа игнорится, ну и само собой я постоянно полачай 504 ошибку.

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

Подскажите как можно решить такую задачку


PM MAIL   Вверх
Aliance
Дата 17.10.2012, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Ну если выдумывать костыли - например парсить в кроне и заносить результат в мемкеш, а при аякс обращении выдавать закешированные данные. Хотя проще сменить тайм аут, а при отказе в этом, сменить хостинг.
PM MAIL WWW ICQ Skype   Вверх
studentigor
Дата 17.10.2012, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

И врятли его интересует то что возникла такая загвоздка.

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

Вот он захотел обновить. берет и запускает обновление - тоесть его кабинет на какомто сайте начинает парсится, и ему возвращается количество спаршеных(новых и обновленных) записей.

Поэтуму нужен какойнить костиль, для начала для js->ajax->php->ajax->js

Какие ещё можно варианты придумать?
PM MAIL   Вверх
studentigor
Дата 17.10.2012, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В общем то, мож кому пригодится.

Когда я с аякса шлю запрос на запуск парсера, - я тупо его запускаю, и отвечаю что-то типа парсер запущен.

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

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

вобщем то Aliance наполовину дал решение. 

Спасибо!
PM MAIL   Вверх
Sanchezzz
  Дата 17.10.2012, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 41
Всего: 60



Цитата

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

Костыль с аяксом не решит ваши проблемы вам нужно переделывать сам крон парсер на порции это 100% без отказное решение проблемы.

Начните с крона + со всего остального написанного кода может есть что оптимизировать чем вбивать очередной костыль.  




--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
studentigor
Дата 17.10.2012, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sanchezzz  - я не взлом имел ввиду. 

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

Я когда описывал проблему, то парсер отрабатывает до конца, просто js недожидается ответа.


PM MAIL   Вверх
Sanchezzz
Дата 17.10.2012, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 41
Всего: 60



покажите код JS возможно есть узкие места


Это сообщение отредактировал(а) Sanchezzz - 17.10.2012, 11:31


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Aliance
Дата 17.10.2012, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 14
Всего: 137



Цитата(studentigor @  17.10.2012,  12:17 Найти цитируемый пост)
Когда я с аякса шлю запрос на запуск парсера, - я тупо его запускаю, и отвечаю что-то типа парсер запущен.

Эм, а как вы хотите вернуть ответ, не дождавшись выполнения работы парсера?
PM MAIL WWW ICQ Skype   Вверх
studentigor
Дата 30.10.2012, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

а как вы хотите вернуть ответ, не дождавшись выполнения работы парсера? 


была мысль создавать паралельный поток, в котором бы работал парсер, и в конце работы запихнул данные в бд.
После того как в одном потеке запустился парсер, второй возвращает ответ в js.

В js Я получил ответ, типо парсер запустился, открываю попап окно, и начинаю с каким нить таймаутом бегать на сервер и смотреть, появилась ли нужная запись в бд, если нет, 
отправляю назад ответ, что ничего нету, а в js смотрю, если ничего нету, то через такойже таймаут опять шлю запрос, пока не получу ответ что в базе что-то есть.
Как только чето появилось, вывожу в попап результат, и останавливаю запросы.

то что проверяю по бд - это так, для примера.

Но такой подход затратный по ресурсам. При создании паралельного потока в 2 раза увеличивается нужда в оперативе, поэтому пока ведутся переговоры.

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.0502 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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