2014-10-26 2 views
0

Я хочу позвонить по 1 миллиону URL-адресов с помощью AJAX.Эффективный способ выполнения 1 миллиона запросов AJAX

То, что я сделал это (Javascript, JQuery используется): цикл

var numbers = [1, 2, 3...1000000]; // numbers.length = 1000000 
$(function() { 
    $.each(numbers, function(key, val) { 
     $.ajax({ 
      url: '/getter.php', 
      data: { id: val}, 
      success: function() { 
       console.info(id); 
      } 
     }); 
    }); 
}); 

I более 1 миллиона целых чисел, и передавая их к моему getter.php (что делает что-то прохладное с тем, что числа).

Проблема после ~ 1,5 тыс. Запросов, которые я получаю Google Chrome.

Я знаю, что я делаю это неэффективно, поэтому я прошу помощи - как на самом деле это сделать правильно? Как получить запрос на php-скрипт 1 миллион раз (не обязательно с JavaScript!)?

ответ

0

Вы можете использовать постоянное соединение между вашим php-скриптом и клиентом, запрашивающим данные.

Я думаю, что вы сталкиваетесь с ограничением времени на то, чтобы жить по единственному запросу, которое вы вызываете. Кроме того, HTTP запрашивает функцию как запрос - ответ, почему, когда вы кладете его в Еогеаспе заявлении, каждое отдельное заявление обрабатывается один, как:

1. iteration: GET /getter.php with value 1 .... wait... Oh theres a response 
2. iteration GET /getter.php with value 2 .... wait Oh another response 

Это, казалось бы, длинный и неправильный процес, как вы, возможно, уже быть_наст разобрался.

Другой подход должен был бы создать постоянный сокет, который функционирует как TCP procotol:

1. open the connection 
2. send all the data 
3. close the connection 

Рассматривали ли вы пытаетесь с WebSocket? Heres несколько учебников: HTML5websocket http://www.tutorialspoint.com/html5/html5_websocket.htm

PHP сокет: http://www.phpbuilder.com/articles/application-architecture/optimization/creating-real-time-applications-with-php-and-websockets.html

EDIT: см Также в этой статье о разнице между AJAX и WebSocket.

«AJAX отлично работает, если вы не спешите, но если вы перемещаете большой объем данных, тогда накладные расходы на создание HTTP-соединения каждый раз будут узким местом. Необходимо постоянное соединение Кроме того, AJAX всегда должен опросить сервер для данных, а не получать его с помощью push с сервера. Если вам нужна скорость и эффективность, вам нужны WebSockets ».

http://blog.safe.com/2014/08/websockets-ajax-webhooks-comparison/

Смежные вопросы