增强版的计数器,非常实用

NI-DAQmx计数器频率测量全攻略:单/双计数器方案怎么选?误差对比与避坑指南 本文深入解析NI-DAQmx计数器在频率测量中的单/双计数器方案选择与误差优化策略。通过实测数据对比,详细阐述不同方案的性能边界、误差来源及硬件配置技巧,帮助工程师在工业自动化、科研实验中实现高精度测量。特别针对NI-DAQmx计数器的选型、时基选择和信号调理提供实用指南,确保系统数据可靠性。 阅读详情

 //文章来源:PHP 4.X 与电子商务网站开发实战
//整理:dx_andy
//时间:2007.8.17 早
//测试环境:win32 apache2.2.4 php5.2.1 mysql5.0.27
//联系:QQ:45665758 E-mail:dx_andy@163.com

 现在流行于互联网上的计数器程序(PHP)一般都很简单,相对来说功能上也相对较少。比如说它只能提供单个的页面使用,对于某些较大的网站来说,还要统计每个专栏的访问量,而不仅仅是首页的访问量。其次,该计数器作弊也很简单,只要不停的刷新,访问量就会不停地向上涨。对一个网站来说,这样是很过分的。
 那么,我们应该怎样来改进它呢?
 第一方面,我们可以在count数据库中加入一项id,作为记录每个专栏的代号,每一个id对应着一个计数值count。在不同的专栏访问时,只要指定不同的id就行了。对于第二项,可以考虑另建一个辅助的数据表,记录登录者的ip、访问的栏目和上次访问时间time。每当一个访问者访问该栏目时,从数据库里选择其ip和id共同对应的上次访问时间,如果数据库里不存在该ip和id,可以认为这是一个新用户,计数可以加1,如果存在,则比较当与当前时间和上次访问时间。两者之差大于1小时,则计数也可以加1。最后删除数据表中时间与当前时间相差大于1小时的项(这一点是为了防止数据表过于庞大)。
 具体看一看实现的方法。
 怎样获得访问者的ip?这需要用到一个函数getenv(),其定义为
 string getenv(string varname)
 其作用是返回环境变量的值,varname是环境变量名。REMOTE_ADDR表示访问者的IP地址。所以用$ipaddress=getenv("REMOTE_ADDR")就可以得到访问者的IP地址。
 对时间,可使用time() 函数,以取得系统的UNIX 时间,以秒做单位。一小时的差别可以用3600秒来代替。
 让我们来看一看实际的操作过程,假定有三个栏目(即建立3个id)。
 建立数据库:
 create table encount
 (
 count int not null,
 id int not null
 );
 
 insert into encount values(0,0),(0,1),(0,2); //在encount表中插入三个数据
 
 create table ipandtime
 (
 ip varchar(15),
 id int not null,
 etime int not null
 );

<?php
 //增强版的网页计数器
 //文件名:enhancecount.php
 //代码来源:PHP 4.X 与电子商务网站开发实战
 //整理:dx_andy
 //时间:2007.8.17 早
 //此代码在win32 Apache2.24 PHP5.5.1 MySQL5.0.27环境下测试通过

 function enhancecount($id)
 {
  $ipaddress=getenv("REMOTE_ADDR");
  
  //echo "/$ipaddress=".$ipaddress."<br>/n";
  
  $currenttime=time();
  
  //echo "/$currenttime=".$currenttime."<br>/n";
  
  $link=mysql_connect("localhost","root","123") or die("Unable to conn MySQL!");
  mysql_select_db("test") or die("Unable to select DB!");
  $query="select etime from ipandtime where ip='$ipaddress' and id='$id'";
  $result=mysql_query($query);

  //if($result) echo "select etime OK!<br>/n";

  if($row=mysql_fetch_row($result))
  //如果返回值存在,则执行下面语句。
  {
   $timestamp=$row[0];
   
   //echo "/$timestamp=".$timestamp."<br>/n";
   //echo "/$currenttime-/$timestamp=".($currenttime-$timestamp)."<br>/n";

   if($currenttime-$timestamp>3600)
   //如果时间超过1个小时,则更新。
   {
    $query="update ipandtime set etime='$currenttime' where ip='$ipaddress'";
    mysql_query($query);
    $query="delete from ipandtime where etime<('$currenttime'-3600)";
    mysql_query($query);
    $update=1;
    $count=updatecount($id,$update);
    mysql_close($link);
    return($count);
    exit();
   }
   //如果小于1小时,只执行删除大于一小时的表项的命令。
    $query="delete from ipandtime where etime<('$currenttime'-3600)";
    $dele=mysql_query($query);
    
    //if($dele) echo "Small Delete ipandtime is OK!<br>/n";

    $update=0;
    $count=updatecount($id,$update);
    mysql_close($link);
    return($count);
    exit();
  }
  //如果不存在,更新数据,并将该ip插入数据库。
   $query="insert into ipandtime(ip,id,etime) values('$ipaddress','$id','$currenttime')";
   mysql_query($query);
   $query="delete from ipandtime where etime<('$currenttime'-3600)";
   mysql_query($query);
   $update=1;
   $count=updatecount($id,$update);
   return($count);
 }
 
//更新数据库encount的函数,形参为id和布尔量update

function updatecount($id,$update)
{ 
 // echo "function updatecount /$id=".$id." /$update=".$update."<br>/n";

 $query="select count from encount where id='$id'";
 $result=mysql_query($query);
 $answer=mysql_fetch_row($result);
 $count=$answer[0];
 if($update)
 {
  $count++;
  $query="update encount set count='$count' where id='$id'";
  mysql_query($query);
 }
 return($count);
}

?>

 上面的函数enhancecount()的返回值为$count,只要在其他需要使用的文件里调用就行了。
 比如,假设某一需要调用该文件的栏目的id为2,那么只要用如下语句就可以达到调用它的目的。

 <?php
 require('enhancecount.php');
 $count=enhancecount(2);
 echo "您好,您是第$count位访问者!";
 ?>

 对由上面的程序稍加改动,就可以实现每日的访问量计数和总访问量计数,当然,数据库也需要用相应的扩充和修改,这一点请读者自已完成。


用App Inventor 2 WxBit 汉化增强版快速制作安卓app 阅读详情

相关推荐

【传奇开心果系列】基于Flet框架开发的增强版“Hello World“应用程序学习flet框架的拔高起点自定义模板特色和实现原理深度解析

本文介绍了一个基于Flet框架开发的增强版"Hello World"应用程序,作为学习现代Python GUI开发的示例。该应用集成了动态问候、中英双语切换、计数器功能和主题切换等特性,展示了响应式设计、事件驱动编程和状态管理等核心技术。通过直观的界面布局和实时交互反馈,该程序可作为开发跨平台GUI应用的模板。文章提供了效果动图和应用场景说明,并分享了源码下载地址。

jackchuanqi的博客 503

三菱PLC——Dx Developer的使用

我的Dx Developer版本 关于编程 1、一般我使用梯形图编程。如果想换用指令编程可以点“梯形图/指令表”转换按钮。 2、梯形图绘制很简单,下面一排按钮就能完成所有工作。 3、添加常开触点。直接按快捷键F5,输入符号x0(不分大小写),按回车即可。 4、添加输出继电器。按F7,输入y0,回车。 5、添加定时器。按F7,输入x0 k...

weixin_33860553的博客 551

从计数器到分频器:深入理解74160/74161在单片机与FPGA中的核心作用

本文深入探讨了74160/74161同步计数器在数字电路设计中的核心作用,从状态机设计到单片机与FPGA的实现方案。通过对比分析STM32定时器配置和Verilog硬件描述语言,揭示了这些经典器件在现代电子系统中的优化与应用技巧,为工程师提供了实用的调试和选型指南。

weixin_42552716的博客 442

php图片划动代码,php图片计数器代码(增强版)

php图片计数器,代码如下:复制代码 代码示例://session_start();$dir = 'cookie.txt';$file = fopen($dir,'r');$content = fgets($file);fclose($file);//if(empty($_SESSION['viewer'])){$content++;$newopen = fopen($dir,'w');fwrit...

weixin_42326020的博客 164

8253/8254计数器实战:如何用控制字配置6种工作模式(附代码示例)

本文深入解析8253/8254可编程定时计数器的控制字配置与6种工作模式,提供详细的代码示例和实战技巧。从基础架构到高级应用,帮助开发者掌握计数器配置的核心技术,实现精确定时和频率生成,适用于嵌入式系统和硬件编程场景。

weixin_30576827的博客 455

深入解析GTM TIO模块S资源计数器:从硬件原理到实战配置

在嵌入式实时控制系统中,定时器/计数器是实现高精度时间测量与信号生成的核心硬件外设。其工作原理基于对时钟信号或外部事件的计数,通过配置不同的计数模式(如边沿计数、电平敏感计数)来满足特定需求。这项技术的核心价值在于将CPU从繁重的实时任务中解放出来,提供确定性的硬件级时序控制,从而提升系统整体性能和可靠性。在汽车电子、工业自动化等对实时性要求苛刻的领域,定时器/计数器广泛应用于电机控制、传感器信号捕获、PWM波形生成等场景。本文聚焦于博世通用定时器模块(GTM)中功能强大的TIO子模块,特别是其S资源计数器

weixin_30530939的博客 388

Java并发 - 计数器

CountDownLatch 可理解为减法计数器 public void testCountDownLatch() throws InterruptedException { // 减法计数器初始值 CountDownLatch countDownLatch = new CountDownLatch(6); for (int i = 0; i < 6; i++) { new Thread(() -> { System.out.pri

DJun的博客 1578

collections模块:增强版数据容器

Python 最吸引人的特性之一就是它丰富的内置数据类型:列表、元组、字典、集合……这些基本容器已经能解决绝大多数日常编程问题。但当你遇到更复杂的数据结构需求,比如需要快速两端操作、需要默认值字典、需要统计频次、需要轻量级数据类,或者需要合并多个字典时,内置容器就显得有些力不从心了。

2601_96023685的博客 28

CTR 模式计数器设计:crypto-js 实现中的安全考量

CTR(Counter Mode,计数器模式)作为一种流行的分组密码工作模式,在数据加密领域被广泛应用。与其他模式相比,CTR 模式具有并行处理能力强、加密解密流程一致等优势,但计数器设计的安全性直接影响整体加密系统的安全性。本文将深入分析 crypto-js 中两种 CTR 模式实现的计数器设计原理,揭示其安全考量与工程实践。 ## CTR 模式工作原理概述 CTR 模式通过将计数器值加密生...

gitblog_00495的博客 430

DX Developer 用户操作手册

指导 DX Developer 用户进行各类操作。

IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

本文介绍了准备工作及接口、事务相关代码编写要点。在接口部分,重点说明了lvc_ahb_if.sv、rkv_ahbram_if.sv和rkv_ahbram_tb.sv三个关键文件的功能,其中rkv_ahbram_if.sv通过动态任务实现复位信号控制。事务部分则涉及lvc_ahb_types.sv中的枚举类型定义和lvc_ahb_transaction.sv中的随机化变量设置,用于构建AHB传输激励。整个验证环境采用模块化设计,通过接口实现TB与DUT的通信,为后续验证工作奠定基础。

weixin_45926435的博客 405

PMSxx系列尘埃粒子计数器驱动在RT-Thread上的实战指南

PMSxx系列尘埃粒子计数器驱动在RT-Thread上的实战指南 1. 项目介绍 PMSxx家族驱动程序 是一个专为Plantower系列PM2.5传感器设计的驱动,适用于RT-Thread实时操作系统。由开发者luhuadong维护,该项目实现了对PMS1003、PMS3003、PMS5003、PMS7003、PMS9003、PMSA003及增强版如PMS5003ST的支持。通过提供自定义接口和...

gitblog_00611的博客 543

中科蓝讯蓝牙开发:从源码到固件的自动化构建链路解析

本文详细解析了中科蓝讯AB530X蓝牙芯片从源码到最终固件的完整自动化构建链路。通过剖析prebuild.bat、GCC编译、postbuild.bat等关键环节,阐述了资源打包、配置生成、代码编译与固件合成的全过程,并重点介绍了如何实现一键编译与自动下载,为开发者高效进行嵌入式蓝牙开发提供清晰指南。

weixin_29193259的博客 121

鸿蒙PC应用进阶开发:从基础计数器到多功能组件集成

本文以鸿蒙PC计数器应用为基础,介绍四项进阶开发技术:1. 使用Preferences实现数据持久化,解决应用重启数据丢失问题;2. 通过组件复用提升代码可维护性,实现统一风格管理;3. 利用路由管理实现多页面切换,适配PC端复杂交互场景;4. 调用分布式数据管理能力,实现PC与手机设备间的数据同步。文章详细讲解了各功能的实现步骤,并针对进阶开发中的常见问题提供解决方案,帮助开发者从基础功能实现向实用应用开发跨越,掌握鸿蒙全场景开发的核心技能。

m0_59315734的博客 692

基于 openEuler 24.03 LTS 源码编译安装 Zabbix 7.4

Zabbix是一款开源的企业级分布式监控系统,支持网络、服务器、应用等多种IT资源的监控。核心功能包括数据采集、告警通知、可视化展示等,采用Server/Agent架构,支持多种操作系统。本文详细介绍了在openEuler 24.03系统上部署Zabbix 7.4.2的完整流程,包括环境准备、MySQL配置、PHP/Apache安装、Zabbix编译安装等步骤,为构建企业级监控系统提供了实践指导。

广然笔记 1189

带你一分钟了解电感与磁珠的区别

在电路设计中会经常使用到电感和磁珠,虽然在电路中的作用有所不同,但它们都属于磁性电子元器件,本文简单介绍下电感和磁珠的区别电感和磁珠电感和磁珠的结构主要由磁性材料金属线圈和外壳组成,具体结构如下图所示:电感磁珠结构图电感其实是金属线圈缠绕在磁芯上,而磁珠是在内部折叠后外围包裹着铁氧体磁性材料。电感器(Inductor)又称扼流器、电抗器、动态电抗器是储能器件,能够把电能转化为磁能而存储起来的元件。磁珠则是能量转换(消耗)器件,将流过他的高频信号以热能的形式消耗掉。

攻城狮鹏哥 1409

增强版数据结构库 —— collections模块

模块提供了一些特殊的容器数据类型,它们是对Python内置数据类型(如dictlistsettuple)的补充和增强。这些工具都是为了解决特定场景下的常见问题而设计的。✅:自动处理缺失键的字典✅Counter:专业的计数器工具✅namedtuple:带字段名的轻量级元组✅deque:高效的双端队列✅:保持插入顺序的字典核心价值:代码更简洁:减少模板代码,提升可读性性能更优:针对特定场景优化的数据结构功能更强:提供内置类型没有的实用功能统计频率时,第一时间想到Counter。

YAnt的博客 499

2026零成本私有化:OpenClaw一键搭建Discord/Telegram智能机器人,数据不出本地,永久免费替代ChatGPT

如果内置的功能不能满足你的需求,你可以很容易地添加自己的自定义工具。public string Description => "查询指定城市的天气";// 调用天气API获取天气信息return $"city今天的天气是晴,温度25度";// 注册工具今天北京的天气怎么样?大模型的选择很重要:不要盲目追求大参数的模型。对于大多数场景来说,7B参数的模型已经足够用了,而且速度快,内存占用低。上下文长度不要设置太大:上下文长度越大,内存占用越高,推理速度越慢。

2601_94871597的博客 259

鸿蒙 NEXT 实战|从零开发计数器应用(API 23 + Stage 模型 + 响应式状态管理)

本文介绍了鸿蒙增强版计数器应用的开发教程,针对初学者从静态UI过渡到动态交互的需求,在基础计数器功能上新增步长控制、范围限制、状态监听等进阶特性。文章重点讲解了ArkUI声明式开发的核心技术: 使用@State实现响应式数据驱动UI更新 通过@Watch监听状态变化并执行副作用逻辑 采用@Builder进行组件封装和代码复用 实现动态样式、过渡动画和输入校验等交互细节 教程包含完整项目创建步骤、核心知识点解析、状态设计思路以及基础版与增强版的代码对比,帮助开发者快速掌握鸿蒙应用开发的核心模式。

Gust_123的博客 348

海康网口相机不能被flexscan3d识别到MVS版本为4.6.1,flex为3.3.24在MVS中能够检测到,但是在flex中只能看到电脑自带相机,如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1040

C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)

本文详细介绍如何将串口通信将数据进行本次存储,主要介绍常用的csv、txt格式文件,由多年实战经验总结,绝对干货!

qq_34059233的博客 7237

JUC篇·原子操作封装类全解析

在 Java 的并发编程领域,JUC(Java.util.concurrent)并发包为开发者提供了强大的工具来处理多线程并发问题。其中,原子操作封装类更是其中的关键部分,它们能够在高并发场景下保证数据操作的原子性,避免了传统锁机制带来的性能开销和线程阻塞问题。

无所不能的开花组❀ 737

【人工智能】提示词避坑指南:为什么大模型越让它“禁止”,它越要“唱反调”?

和 AI 沟通就像和聪明但直脑筋的工科生说话——

奶爸的编程之路,也就一周冷个三天 224

JUC并发编程 - 3.4 原理之线程运行(增强版)

本节从理论到实战全面解析了「线程的运行原理」,补充了:栈帧结构细节上下文切换的细节与优化程序计数器的核心作用多核调度的企业级视角远程监控的安全配置👉 这节课不仅让你看懂 JVM 是怎么调度线程的,还让你具备大厂级的实战视野✅。

tang7mj的博客 1149

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

数字电路入门实战:拆解一个经典的汽车尾灯控制器,理解计数器与译码器的妙用

本文通过拆解汽车尾灯控制器,深入解析数字电路中计数器与译码器的协作原理。以74LS161计数器和74LS138译码器为核心,详细讲解如何实现LED循环点亮、转向区分及同步闪烁功能,为数字电路课程设计提供实用案例。

weixin_30181209的博客 298

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【原创】增强版冒泡排序算法-java版

第N趟循环,如果已经没有移动元素的操作,说明排序已完成,循环应该退出,不必再执行后续的循环操作,因为就算比较也不会再有元素会被移动。增加此控制计数器。控制循环退出。

Java高手真经 1279

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 文件上传详细讲解
下一篇: 关于form表单的美化方案讲解
dx_andy
博客等级 码龄19年 8粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值