好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

ajax php 聊天室实例代码(3) - 综合实例

ajax php 聊天室实例代码(3) if  (! $s )  die ( "no content!!" );    $fp  = @ fopen ( $filename , "a+" );    if  (! $fp )  die ( "repeat" );    $re_time  = 0;    while (!@ flock ( $fp , lock_ex))   {    sleep(1);     $re_time ++;     if  ( $re_time  >=4)  break ;   }    if  ( $re_time  <4)   {    @ fputs ( $fp , $s );    @ flock ( $fp , lock_un);   }    else   die ( "repeat" );   @fclose( $fp );    echo   "ok" ;  }  else   if  ( $action  ==  "read" )  {    $first  =  $_post [ "first" ];    $lastmod  =  intval ( $_post [ "lastmod" ]) -  $get_past_sec ;  //得到两秒以内的所有发言,     $alastmod  = @ filemtime ( $filename );    if  ( $lastmod  -  $alastmod  > 360*48)  die ;    $name  =  $_post [ 'name' ];    $name  =  str_replace ( "n" , "" , $name );    $ip  = get_ip();    $json  =  array ();    $json [ "lastmod" ] = time();    $item  =  array ();    $newonline  =  array ();    $offline  =  array ();    $fp  = @ fopen ( $filename , 'r' );    flock ( $fp ,lock_ex);    $s  =  fread ( $fp , filesize ( $filename ));    flock ( $fp ,lock_un);   fclose( $fp );    $lines  =  explode ( "n" , $s );       if  ( $alastmod  >=  $lastmod  && ! $first )   {     foreach ( $lines   as   $l )    {      $item2  =  array ();      $l  =  str_replace ( array ( "n" , "r" ), "" , $l );      if  ( strpos ( $l , "|" ) === false)  continue ;      $arr  =  explode ( "|" , $l );      $t  =  intval ( $arr [0]);      if  ( $t  >=  $lastmod )     {       $item2 [ "time" ] =  date ( "h:i:s" , $t );       $item2 [ "word" ] =  addslashes ( $arr [1]);       $item [] =  $item2 ;     }    }   }    else   if  ( $first )   {     $item  =  array ();     $total  =  count ( $lines );     for ( $i = $total -1; $i >= $total - $least ; $i --)    {      if  ( $i <=0)  break ;      $item2  =  array ();      $l  =  str_replace ( array ( "n" , "r" ), "" , $lines [ $i ]);      if  ( strpos ( $l , "|" ) === false)  continue ;      $arr  =  explode ( "|" , $l );      $t  =  intval ( $arr [0]);      $item2 [ "time" ] = ( date ( "m-d" ,time()) ==  date ( "m-d" , $t ))? date ( "h:i:s" , $t ): date ( "m-d h:i" , $t );      $item2 [ "word" ] =  addslashes ( $arr [1]);      $item [] =  $item2 ;    }     $item  =  array_reverse ( $item );   }       $s  =  "" ;    $nt  = time();    $onlines  =  array ();    if ( $disonline  &&  $touchme )   {     $users  = @file( $datafile );     foreach ( $users   as   $l )    {      $l  =  str_replace ( array ( "r" , "n" ), "" , $l );      if  ( strpos ( $l , "|" ) === false)     {       $s .= $l . "n" ;       continue ;     }      $arr  =  explode ( "|" , $l );      if  ( $nt  -  intval ( $arr [1]) <  $touchs *3)     {       if  (trim( $name ) == trim( $arr [2]))      {        $s .=  $arr [0]. "|" .time(). "|" . $name . "|" .get_ip(). "|n" ;      }       else   $s .= $l . "n" ;       $onlines  [] = htmlspecialchars( $arr [2]);     }    }    @ file_put_contents ( $datafile , $s );     $json [ "onlines" ] =  $onlines ;   }    $json [ "lines" ] =  $item ;    echo  array2json( $json );  }  else   if  ( $action  ==  "keep"  )  {   keeponline();    echo   "keep ok" ;  }  else   if  ( $action  ==  "quit" )  {    $name  =  $_post [ 'name' ];    if ( $disonline )   {     $users  = @file( $datafile );     foreach ( $users   as   $l )    {      $l  =  str_replace ( array ( "r" , "n" ), "" , $l );      if  ( strpos ( $l , "|" ) === false)     {       $s .= $l . "n" ;       continue ;     }      $arr  =  explode ( "|" , $l );      if  (trim( $name ) == trim( $arr [2]))  continue ;      else   $s .= $l . "n" ;    }    @ file_put_contents ( $datafile , $s );     echo   "ok" ;   }    die ();  }  else   {  ?>

查看更多关于ajax php 聊天室实例代码(3) - 综合实例的详细内容...

  阅读:42次