«Позиции в Яндеске» теперь многопоточны
Под впечатлением от статьи Алексея Качаева «jQuery + Ajax – парсим PR в несколько потоков«, я решил доработать свой скриптик до многопоточности.
Многопоточность реализована на основе связки фреймворка jQuery и PHP. В цикле, функция $.post, работает асинхронно, тоесть возвращает управление основному потоку сразу, но выполнение продолжается.
for( var i = 0; i <= keywords_array.length - 1; i++ ){
if( keywords_array[i].length ){
var params = "hostname=" + hostname + "&keyword=" + keywords_array[i] + "&id=" + i;
$.post(
"worker.php",
params,
function(data){
var id = $("id",data).html();
var keyword = $("keyword",data).html();
var concurents = $("concurents",data).html();
var position = $("position",data).html();
// Кейворд
$('#k_' + id).html(keyword);
// Позиция
$('#p_' + id).html(position);
// Конкуренты
$('#c_' + id).html('<h3 id="show_hide_' + id + '">Показать/спрятать</h3><ol style="display: none;">' + concurents + '</ol>');
$("#show_hide_"+ id ).click(function(){
$(this).next("ol").slideToggle("slow").siblings("ol:visible").slideUp("slow");
$(this).toggleClass("active");
$(this).siblings("h3").removeClass("active");
});
}
);
}
}
Но все это технические тонкости.
Что получает от многопоточности обычный пользователь?
Прежде всего скорость работы скрипта существенно увеличивается, и данные обновляются в «прямом эфире», вот как это выглядит на практике:

Это тестовая версия, и мой первый опыт на jQuery, потому прошу не судить строго, но об ошибках, если не трудно сообщайте.
Кто будет использовать скрипт впервые, ознакомьтесь с тем, что для его работы нужна регистрация в Яндексе, но грузите все равно отсюда, потому как на странице утилит лежат старые версии.


Не силён в программирование. Как можно увеличить время выполнения скрипта?
300 секунд явно маловато бывает иногда. Спасибо.
Это же аякс, еси один из потоков вовремя не завершится, скрипт напишет об ошибке.
Отличный скрипт. То, что искал. Большое спасибо!
Подскажите: а как определять запросы для конкретного региона в вашем скрипте ?