网站地图    收藏   

主页 > php专栏 > php综合实列 >

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

来源:自学PHP网    时间:2014-12-02 13:09 作者: 阅读:

[导读] if(!$s)die(nocontent!!);$fp=@fopen($filename,a+);if(!$fp)die(repeat);$re_time=0;while(!@flock($fp,lock_ex)){sleep(1);$re_tim...

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

  1. if (!$sdie("no content!!"); 
  2.  $fp = @fopen($filename,"a+"); 
  3.  if (!$fpdie("repeat"); 
  4.  $re_time = 0; 
  5.  while(!@flock($fp, lock_ex)) 
  6.  { 
  7.   sleep(1); 
  8.   $re_time++; 
  9.   if ($re_time >=4) break
  10.  } 
  11.  if ($re_time <4) 
  12.  { 
  13.   @fputs($fp,$s); 
  14.   @flock($fp, lock_un); 
  15.  } 
  16.  else die("repeat"); 
  17.  @fclose($fp); 
  18.  echo "ok"
  19. else if ($action == "read"
  20.  $first = $_post["first"]; 
  21.  $lastmod = intval($_post["lastmod"]) - $get_past_sec//得到两秒以内的所有发言, 
  22.  $alastmod = @filemtime($filename); 
  23.  if ($lastmod - $alastmod > 360*48) die
  24.  $name = $_post['name']; 
  25.  $name = str_replace("n","",$name); 
  26.  $ip = get_ip(); 
  27.  $json = array(); 
  28.  $json["lastmod"] = time(); 
  29.  $item = array(); 
  30.  $newonline = array(); 
  31.  $offline = array(); 
  32.  $fp = @fopen($filename,'r'); 
  33.  flock($fp,lock_ex); 
  34.  $s = fread($fp,filesize($filename)); 
  35.  flock($fp,lock_un); 
  36.  fclose($fp); 
  37.  $lines = explode("n",$s); 
  38.   
  39.  if ($alastmod >= $lastmod && !$first
  40.  { 
  41.   foreach($lines as $l
  42.   { 
  43.    $item2 = array(); 
  44.    $l = str_replace(array("n","r"),"",$l); 
  45.    if (strpos($l,"|") === false) continue
  46.    $arr = explode("|",$l); 
  47.    $t = intval($arr[0]); 
  48.    if ($t >= $lastmod
  49.    { 
  50.     $item2["time"] = date("h:i:s",$t); 
  51.     $item2["word"] = addslashes($arr[1]); 
  52.     $item[] = $item2
  53.    } 
  54.   } 
  55.  } 
  56.  else if ($first
  57.  { 
  58.   $item = array(); 
  59.   $total = count($lines); 
  60.   for($i=$total-1;$i>=$total-$least;$i--) 
  61.   { 
  62.    if ($i<=0) break
  63.    $item2 = array(); 
  64.    $l = str_replace(array("n","r"),"",$lines[$i]); 
  65.    if (strpos($l,"|") === false) continue
  66.    $arr = explode("|",$l); 
  67.    $t = intval($arr[0]); 
  68.    $item2["time"] = (date("m-d",time()) == date("m-d",$t))?date("h:i:s",$t):date("m-d h:i",$t); 
  69.    $item2["word"] = addslashes($arr[1]); 
  70.    $item[] = $item2
  71.   } 
  72.   $item = array_reverse($item); 
  73.  } 
  74.   
  75.  $s = ""
  76.  $nt = time(); 
  77.  $onlines = array(); 
  78.  if($disonline && $touchme
  79.  { 
  80.   $users = @file($datafile); 
  81.   foreach($users as $l
  82.   { 
  83.    $l = str_replace(array("r","n"),"",$l); 
  84.    if (strpos($l,"|") === false) 
  85.    { 
  86.     $s.=$l."n"
  87.     continue
  88.    } 
  89.    $arr = explode("|",$l); 
  90.    if ($nt - intval($arr[1]) < $touchs*3) 
  91.    { 
  92.     if (trim($name) == trim($arr[2])) 
  93.     { 
  94.      $s.= $arr[0]."|".time()."|".$name."|".get_ip()."|n"
  95.     } 
  96.     else $s.=$l."n"
  97.     $onlines [] = htmlspecialchars($arr[2]); 
  98.    } 
  99.   } 
  100.   @file_put_contents($datafile,$s); 
  101.   $json["onlines"] = $onlines
  102.  } 
  103.  $json["lines"] = $item
  104.  echo array2json($json); 
  105. else if ($action == "keep" ) 
  106.  keeponline(); 
  107.  echo "keep ok"
  108. else if ($action == "quit"
  109.  $name = $_post['name']; 
  110.  if($disonline
  111.  { 
  112.   $users = @file($datafile); 
  113.   foreach($users as $l
  114.   { 
  115.    $l = str_replace(array("r","n"),"",$l); 
  116.    if (strpos($l,"|") === false) 
  117.    { 
  118.     $s.=$l."n"
  119.     continue
  120.    } 
  121.    $arr = explode("|",$l); 
  122.    if (trim($name) == trim($arr[2])) continue
  123.    else $s.=$l."n"
  124.   } 
  125.   @file_put_contents($datafile,$s); 
  126.   echo "ok"
  127.  } 
  128.  die(); 
  129. else 
  130. ?>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论