只有十分了,问个写入文数据库的问题.

it_zl 2005-05-17 10:16:27
$date=date("Y-m-d H:i:s");
$ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
$fp=fopen("$logindate","a"); $str=$ip."|".$date."|".$username."|".$password."|".$authinput."\n";
fwrite($fp,$str);
fclose($fp);

以上是写入文数据库.如果我现在只想往里面写入最新五十条,等到五十一条的时候,就去覆盖第一条,五十二条的时候,就去覆盖第二条,这样循环下去.请问该如何写?
...全文
98 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ray929 2005-05-18
  • 打赏
  • 举报
回复
反复刷新这个页面就能看出效果
刷新间隔最好大于1秒
ray929 2005-05-18
  • 打赏
  • 举报
回复
呵呵

代码,应该很简单的,能看懂:


<pre>
<?
$max_log = 10; //最大记录数
$logindate = "file.txt"; //日志文件名
$time = time();
$date=date("Y-m-d H:i:s",$time);
$str = $date."|something";
//要写入的数据,我把日期放在第一个了,如果放在后面,调整下面的$buffer2[0]
$content = array();
$index = array();
if(file_exists($logindate)) {
$handle=fopen($logindate,"r");
while (!feof ($handle)) {
$buffer1 = trim(fgets($handle, 4096));
$buffer2 = explode("|",$buffer1);
if(trim ($buffer1) != "") {
$content[] = $buffer1;
$index[] = $buffer2[0];
}
}
fclose ($handle);
}

$array_num = count($index);

if($array_num<10)$content[$array_num] = $str;
else {
$v = false;
for($i=1;$i<$array_num;$i++) {
if(strtotime ($index[$i])<strtotime ($index[$i-1])) {
$v = true;
break;
}
}
if($v == false) $content[0] = $str;
else $content[$i] = $str;
}
var_dump($content);
$content = implode("\r\n",$content);
$handle=fopen($logindate,"w");
fwrite($handle,$content);
fclose($handle);
?>
</pre>
it_zl 2005-05-18
  • 打赏
  • 举报
回复
我不会写才要源码的呀.......我没用过TEXT数据.
ray929 2005-05-17
  • 打赏
  • 举报
回复
全部读出来
处理后再写进去

反正只有50行,效率上应该不会有什么问题的
it_zl 2005-05-17
  • 打赏
  • 举报
回复
没人有回答吗?
  • 打赏
  • 举报
回复
晕了,还要人家给出源代码,够懒的家伙!

在这点上,还是用数据库最方便,按时间排序,如果超过50记录就UPDATE最老的那一条!
flashixj61 2005-05-17
  • 打赏
  • 举报
回复
做个insert触发器不就好了
ray929 2005-05-17
  • 打赏
  • 举报
回复
代码写好了
下班了
没来得及帖出来
明天给你
it_zl 2005-05-17
  • 打赏
  • 举报
回复
有人给出代码吗?
it_zl 2005-05-17
  • 打赏
  • 举报
回复
能给出代码吗?

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧