Ноя 9

«Позиции в Яндеске» теперь многопоточны

Рубрики: jQuery, Php, Новости Метки: , , ,  Количество просмотров: 1 975

Под впечатлением от статьи Алексея Качаева «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, потому прошу не судить строго, но об ошибках, если не трудно сообщайте.

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

Многопоточные "Позиции в Яндексе" (UTF-8)

Загрузок: 595 | Размер: 22,3 KiB

Другие статьи автора

Комментарии

  1. Цитировать Дмитрий

    Не силён в программирование. Как можно увеличить время выполнения скрипта?
    300 секунд явно маловато бывает иногда. Спасибо.

  2. Цитировать Samborsky

    Это же аякс, еси один из потоков вовремя не завершится, скрипт напишет об ошибке.

  3. Цитировать коллективный разум

    Отличный скрипт. То, что искал. Большое спасибо!

  4. Цитировать jonnik

    Подскажите: а как определять запросы для конкретного региона в вашем скрипте ?

Добавить комментарий