Всем привет. Написал немного извращенную систему обновления чата(для сокращения трафика). В чем суть :при входе в чат один раз текст чата грузится полностью. Загоняется в переменную длина полученной строки(чата). Затем все запросы на обновление кидаются в 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 минуту
в чем же дело не пойму...