Множественное обращение к сайту
От: Neir0  
Дата: 21.12.10 22:06
Оценка:
Доброго времени суток.

Интересует, можно ли сделать такую штуку — отправляет аяксом запрос на сайт, он обрабатывается в течение 10-20 минут. В течение этого времени с переодичностью раз в 10 секунд отправляем на сайт другие аякс запросы, спрашивающие у сайта, как у него дела, как продвигается выполнение первого запроса и т.д. У меня получилось так, что пока не придет ответ на первый запрос, не приходят ответы и на последующие запросы, т.е. браузер тупо ждет ответа, а потом разом получает и ответ на первый запрос и несколько десятков ответов о состояние запроса.
Re: Множественное обращение к сайту
От: Аноним  
Дата: 22.12.10 06:23
Оценка: +1
Здравствуйте, Neir0, Вы писали:

N>Доброго времени суток.


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


наверное на тот самый первый запрос нужно, после его получения, вернуть результат — а потом уж мониторить состояние джоба, который выполняется по тому самому первому запросу.
Re[2]: Множественное обращение к сайту
От: Neir0  
Дата: 22.12.10 09:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Neir0, Вы писали:


N>>Доброго времени суток.


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


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


Ну ответить на тот самый первый запрос не получится, поскольку он возвращает уже готовый ответ и раньше, чем через 10 минут, сделать ему это крайне затруднительно.
Это то как у меня реализовано сейчас, как я понимаю, можно просто отправить запрос, запустить механизм обработки, дать ответ, и потом уже отвечать на запросы о ходе выполения.
Не подскажите, как это можно организовать?
Re[3]: Множественное обращение к сайту
От: Аноним  
Дата: 22.12.10 09:50
Оценка:
Здравствуйте, Neir0, Вы писали:

N>Ну ответить на тот самый первый запрос не получится, поскольку он возвращает уже готовый ответ и раньше, чем через 10 минут, сделать ему это крайне затруднительно.

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

твой 1й запрос на сервере должен запустить длительную обработку асинхронно в новом потоке и сразу вернуть идентификатор процесса назад
Re: Множественное обращение к сайту
От: Lloyd Россия  
Дата: 22.12.10 09:56
Оценка:
Здравствуйте, Neir0, Вы писали:

N>Доброго времени суток.


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


http://msdn.microsoft.com/en-us/magazine/cc163553.aspx
http://msdn.microsoft.com/en-us/magazine/cc163542.aspx
Re: Множественное обращение к сайту
От: milvic  
Дата: 23.12.10 08:15
Оценка:
на исходной странице:
<input id="Button1" type="button" value="button" onclick="start_counter()" />
<script language="JavaScript" type="text/javascript">
    // ajax запрос на сервер
    function request() {
        $.ajax({
            url: 'About.aspx',             // указываем URL и
            dataType: "json",                     // тип загружаемых данных
            success: function (data, textStatus) { // вешаем свой обработчик на функцию success
                if (data == 3) {               // если сервер закончил выполнение LongMethod
                    clearTimeout(var_timer); // останавливаем рекурсивный опрос сервера
                    alert("остановились");
                }
            }
        });
    }
    // рекурсия
    function start_counter() {
        request(); 
        var_timer = setTimeout("start_counter()", 3000);
    }
</script>


на странице где должен выполняться "длинный метод":
    public partial class About : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["start"] == null)
            {
                System.Threading.Thread t = new System.Threading.Thread(LongMethod);
                t.Start();
                Session["start"] = 1; // начали работать
                Response.End();
            } else if (Convert.ToInt32(Session["start"]) == 3)
            {
                Response.Write("3"); // статус окончания выполнения  LongMethod
                Response.End();
            }
        }

        private void LongMethod()
        {
            Thread.Sleep(30000);
            Session["start"] = 3;
        }
    }
Re[2]: Множественное обращение к сайту
От: milvic  
Дата: 23.12.10 08:51
Оценка:
да, и работу с потоками ессно нужно совсем по другому организовывать.
код больше для концепции писался.
Re: Множественное обращение к сайту
От: divergo  
Дата: 24.12.10 05:46
Оценка:
Вы наверное не в курсе, но ajax запросы бывают синхронными и асинхронными. Используйте второй метод вместо первого, и будет Вам счастье.
Re[2]: Множественное обращение к сайту
От: Neir0  
Дата: 24.12.10 16:57
Оценка:
Здравствуйте, divergo, Вы писали:

D>Вы наверное не в курсе, но ajax запросы бывают синхронными и асинхронными. Используйте второй метод вместо первого, и будет Вам счастье.

D>

Так они асинхронно шлются, а вот ответы приходят последовательно
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.