вывод значения функции через равный интервал

(Ответов: 9, Просмотров: 937)
  1. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Всем привет! Начал изучать JS вот.. но чего то успехов мало пока

    есть блок в который php функция выводит число, которое постоянно меняется:
    PHP код:
    <?php
    echo "<b>".sizeof(file($base))."</b>";
    ?>
    при обновлении страницы число меняется.
    надо сделать чтобы число менялось с заданныем интервалом в 1 секунду, без перезагрузки страницы.
    понимаю что надо использовать setInterval
    но не меняется((

    пробовал вот так:
    Код:
    var number = "<?=sizeof(file($base))?>";
    var msgelement = document.getElementById('userOnline').innerHTML=setInterval('number', 1000);
    число выводится но не меняется
    помогите пожалуйста.. измаялся уже. вторые сутки голову ломаю.
    • 0
  2. Дипломник
    • Регистрация: 16.04.2011
    • Сообщений: 150
    • Репутация: 48
    Вы не правильно понимаете принцип "Клиентский" и "Серверный" языки.
    Конечно число не будет меняться(хотя оно меняется, но вы этого не замечаете), так как оно у вас всегда <?=sizeof(file($base))?>

    Для вашей задачи может подойти 2 варианта:
    1. Если number будет массивом
    2. Использовать ajax, но интервал в секунду слишком мал для него(хотя можно грузить массивами раз в минуту).
    • 0
  3. Banned
    • Регистрация: 16.04.2011
    • Сообщений: 1,120
    • Записей в дневнике: 1
    • Репутация: 481
    Цитата Сообщение от FullHouse Посмотреть сообщение
    1. Если number будет массивом
    2. Использовать ajax, но интервал в секунду слишком мал для него(хотя можно грузить массивами раз в минуту).
    Первый вариант не подойдет, т.к. узнать зарание значения userOnline (судя по ее названию) нельзя.
    Остается только вариант с аяксом.
    • 0
  4. Дипломник
    • Регистрация: 16.04.2011
    • Сообщений: 150
    • Репутация: 48
    Цитата Сообщение от Tiulkin Посмотреть сообщение
    Первый вариант не подойдет, т.к. узнать зарание значения userOnline (судя по ее названию) нельзя.
    Остается только вариант с аяксом.
    А, вот что это такое. Но вариант раз в секунду тогда тем более отпадает, так как при 100-200 посетителей онлайн - хостинг лопнет (даже VPS не справиться) - это будет похоже на маленький авто-DDOS
    • 0
  5. Banned
    • Регистрация: 16.04.2011
    • Сообщений: 1,120
    • Записей в дневнике: 1
    • Репутация: 481
    Цитата Сообщение от FullHouse Посмотреть сообщение
    А, вот что это такое.
    Просто обобщенное название технологии асинхронной связи страницы с сервером.
    В книжке, которую Вы читаете (надеюсь) по JS, странице на 600-й (в зависимости от объема книги) обязательно должна бы глава по аяксу. Ну или гугл в помощь.
    • 0
  6. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    спасибо всем за ответы!!
    FullHouse, я сам уже допер что не получится так и методом научно тыка и копания в мануалах дошел до такоего варианта:
    Код:
    setInterval(function() {
    //Тут Аякс запрос
    request = new XMLHttpRequest();
    request.open("GET", "user_session.txt", true);
    request.send(null);
    	//Пусть response - Данные из файла
    var response = request.responseText;
    	number=response.split("|").length-1;
    var msgelement = document.getElementById("userOnline");
    	msgelement.innerHTML=number;
    //Конец  Аякс запроса
    }, 1000);
    НО, считает неправильно. причина в этой строке: number=response.split("|").length-1;
    дело в том что у меня данные в файле хранятся в таком виде: (ниже прикрепил файл)
    Код:
    2uc6oc0g2g2alv6cotbb8k1c85|1356819742
    fp6onv96hjv3fsu1jvernm4544|1356819747
    t9fee2k4m43qr1e8c3tl71la30|1356819750
    tj6m9qijcjp9emq3n5f4vfu7o7|1356819756
    и нужно посчитать только количество значений выделенных жирным шрифтом, это и бедет реальное количество народа онлайн.
    исходя из этого split("|") не разобьет строку на новый массив, так как в конце первой строчки нету разделителя |
    там просто переход на новую строку.

    по поводу 1 секунды в интервале, так стоит только для теста, на локальной машине. в реале будет стоять 30сек - 1мин.
    Вложения
    Последний раз редактировалось cOAPerator; 30.12.2012 в 21:03.
    • 0
  7. Студент Аватар для GreenBanan
    • Регистрация: 25.12.2012
    • Сообщений: 90
    • Репутация: 16
    Код HTML:
    ...
    	<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script> <script>
    		function test() {
    			$.get('user_session.txt', function(data) {    	
    				var lines = data.split("\n");
    				alert(lines.length-1);
    			});
    		}
    	</script>
    ...
    Код считает количество строчек в файле. Единицу вычитаем именно потому, что последняя строка у вас была пустой. "\n" (без кавычек) символ переноса строки.
    Последний раз редактировалось GreenBanan; 01.01.2013 в 05:51.
    • 1

    Спасибо сказали:

    cOAPerator(02.01.2013),
  8. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    GreenBanan, спасибо за ответ)
    сделал аналогично, посредством ajax

    код


    Код:
    setInterval(function() {
    xmlhttp = new XMLHttpRequest();
    xmlhttp.open("GET","modules/user_session.txt"+"?"+Math.random(), true);
    xmlhttp.onreadystatechange=function(){
    	if(xmlhttp.readyState==4){
    		if(xmlhttp.status==200){
    			number=xmlhttp.responseText.split("|").length-1;
    //alert(xmlhttp.responseText);
    		var msgelement = document.getElementById("userOnline");
    			msgelement.innerHTML=number
    		}
    	}
    };
    xmlhttp.send(null);
    }, 3000);
    [свернуть]


    мож кому пригодиться)

    пс: тему можно закрывать.
    • 0
  9. Студент Аватар для GreenBanan
    • Регистрация: 25.12.2012
    • Сообщений: 90
    • Репутация: 16
    cOAPerator, для спасибо есть кнопка. А так, это тоже аякс, просто с jquery мне было меньше писать. Осталось бы обернуть SetInterval и все.
    • 0
  10. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    GreenBanan, да :) ткнул спасибо. вечно забываю про нее
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Интервал между запросами при поиске в YandexMarket
Софт, скрипты, сервисы 2 18.12.2012 15:43
Вывод данных через сортировку в mysql
Web программирование 0 20.08.2012 21:36
Вывод скриптов, ссылок, картинок в html через php
Вопросы от новичков 10 06.01.2012 02:08
Вывод wmr через wm
Обмен 4 28.02.2010 18:28

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры