Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 14.05.2011, 16:00
temofony вне форума Посмотреть профиль Отправить личное сообщение для temofony Найти все сообщения от temofony
  № 1  
Ответить с цитированием
temofony
 
Аватар для temofony

Регистрация: Feb 2010
Сообщений: 153
Отправить сообщение для temofony с помощью ICQ Отправить сообщение для temofony с помощью Skype™
По умолчанию проблема с обновлением чата

Всем привет. Написал немного извращенную систему обновления чата(для сокращения трафика). В чем суть :при входе в чат один раз текст чата грузится полностью. Загоняется в переменную длина полученной строки(чата). Затем все запросы на обновление кидаются в update_chat.php. Этому пшп поступает переменная-длина чата пользователя. Пхпшник грузит текст чата, вычисляет его длину, и с помощью переменных длины чата пользователя и длины строки чата на серве вырезает тот самый недостающий кусок, который отправляет пользователю.Код вроде нормальный, пару секунд в оутпут вываливается что надо, но затем отправляемая переменная таинственно обращается в NaN, ну и как следствие все летит к чертям.

Код AS1/AS2:
function load_channel() {
	if(first_load==true) {
_global.v="?";
var x = channel+ v + (new Date()).getTime();
var loader = new LoadVars();
loader.load(x);
loader.onData = function (str:String)
{
    _root.main.chat_text.htmlText = str;
	user_length=str.length;
	trace("first load length="+user_length);
	first_load=false;
	can_add=true;
    delete loader;
}
if(scr_flag==1) {
main.chat_text.scroll = main.chat_text.maxscroll;
}
	}else{
		update_chat.user_chat_length=user_length;
		trace("to send="+update_chat.user_chat_length);
		update_chat.sendAndLoad("http://tc.brightmind.ru/update_chat.php",add_pack,"POST");
		add_pack.onData=function(add_text:String) {
			if(add_text=="n") {
				user_length+=0;
				trace("no new data");
			}else{
				trace("got add_text length from server"+add_text.length);
			trace(typeof(add_text.length));
			user_length+=add_text.length;
			trace("updated user_length="+user_length);
			}
		}
	}
}
var intervalID1:Number=setInterval(load_channel,230);
Теперь пшп:

PHP код:
<?php
$ucl
=$_POST['user_chat_length'];
$ucl+=3;
function 
win_utf8($in_text) { 
   
$output "";
   
$other[1025] = "Ё";
   
$other[1105] = "ё";
   
$other[1028] = "Є";
   
$other[1108] = "є";
   
$other[1030] = "I";
   
$other[1110] = "i";
   
$other[1031] = "Ї";
   
$other[1111] = "ї";
   for (
$i 0$i strlen($in_text); $i++){
      if (
ord($in_text{$i}) > 191) {
         
$output.="&#".(ord($in_text{$i})+848).";";
      }else {
         if (
array_search($in_text{$i}, $other)===false){
            
$output.=$in_text{$i};
         }else {
            
$output.="&#".array_search($in_text{$i}, $other).";";
         }
      }
   }
   return 
$output;
}
function 
Utf8Win($str,$type="w")  {
    static 
$conv='';

    if (!
is_array($conv))  {
        
$conv = array();

        for(
$x=128;$x<=143;$x++)  {
            
$conv['u'][]=chr(209).chr($x);
            
$conv['w'][]=chr($x+112);

        }

        for(
$x=144;$x<=191;$x++)  {
            
$conv['u'][]=chr(208).chr($x);
            
$conv['w'][]=chr($x+48);
        }

        
$conv['u'][]=chr(208).chr(129);
        
$conv['w'][]=chr(168);
        
$conv['u'][]=chr(209).chr(145);
        
$conv['w'][]=chr(184);
        
$conv['u'][]=chr(208).chr(135);
        
$conv['w'][]=chr(175);
        
$conv['u'][]=chr(209).chr(151);
        
$conv['w'][]=chr(191);
        
$conv['u'][]=chr(208).chr(134);
        
$conv['w'][]=chr(178);
        
$conv['u'][]=chr(209).chr(150);
        
$conv['w'][]=chr(179);
        
$conv['u'][]=chr(210).chr(144);
        
$conv['w'][]=chr(165);
        
$conv['u'][]=chr(210).chr(145);
        
$conv['w'][]=chr(180);
        
$conv['u'][]=chr(208).chr(132);
        
$conv['w'][]=chr(170);
        
$conv['u'][]=chr(209).chr(148);
        
$conv['w'][]=chr(186);
        
$conv['u'][]=chr(226).chr(132).chr(150);
        
$conv['w'][]=chr(185);
    }

    if (
$type == 'w') {
        return 
str_replace($conv['u'],$conv['w'],$str);
    } elseif (
$type == 'u') {
        return 
str_replace($conv['w'], $conv['u'],$str);
    } else {
        return 
$str;
    }
}

$file fopen("main_channel.txt","r");

while(!
feof($file))
 {

$string fgets($file);

}

fclose($file);
$line=Utf8Win($string);
$count_line=strlen($line);
if(
$ucl==$count_line) {
echo 
"n";
}
$to_send=substr($line,$ucl);
$to_send=win_utf8($to_send);
echo 
$to_send;
?>

Весь день уже ломаю голову в чем дело....
Добавлено через 1 минуту
в чем же дело не пойму...
__________________
Незнание правил освобождает от ответственности.

Создать новую тему   Часовой пояс GMT +4, время: 10:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:35.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.