jQuery技术

PHP+jquery实时显示网站在线人数的方法

字号+ 作者:H5之家 来源:H5之家 2017-05-05 18:00 我要评论( )

这篇文章主要介绍了PHP+jquery实时显示网站在线人数的方法,较为详细的分析了实时显示在线人数的原理与代码实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP+jquery实时显示网站在线人数的方法。分享给大家供大家参考。具体分析如下:

在线人数最简单的就是直接利用js调用php,这样可以显示出有多少人访问了本站,如果要在用户未刷新页面的状态实时显示用户在线人数,我们可以利用jquery ajax来实现。

我们在一些应用中需要动态展示数据,比如当前在线人数,当前交易总额,当前汇率等等,前端页面需要实时刷新获取最新数据。这里我们将结合实例给大家介绍使用jQuery和PHP来实现动态数字展示效果。

本例假设要在页面上动态展示(无需刷新整个页面,只是局部刷新动态数字)当前在线用户数,常见在一些统计平台上应用。在HTML页面中只需定义以下结构:

复制代码 代码如下:

<p>当前在线:<span></span></p>

首先我们要定义一个动画过程,使用jQuery的animate()函数实现从一个数字到另一个数字的变换过程,以下magic_number()自定义函数将代码整合如下:

[code]function magic_number(value) {
var num = $("#number");
num.animate({count: value}, {
duration: 500,
step: function() {
num.text(String(parseInt(this.count)));
}
});
};


然后update()函数使用了jQuery的$.getJSON()向后台number.php发送了一个ajax请求,在得到PHP相应后,调用magic_number()展示最新的数字。为了能看到更好的效果,我们使用setInterval()设置代码执行的间隔时间。

复制代码 代码如下:

function update() {
$.getJSON("number.php?jsonp=?", function(data) {
magic_number(data.n);
});
};

setInterval(update, 5000); //5秒钟执行一次
update();


PHP代码部分:
实际项目中,我们会使用PHP获取数据库中的最新数据,然后通过PHP返回给前端。本例为了更好的演示,使用随机数字,最后以json格式返回给前端js,number.php代码如下:

复制代码 代码如下:

$total_data = array(
'n' => rand(0,999)
);
echo $_GET['jsonp'].'('. json_encode($total_data) . ')';


原理其实非常的简单就是利用js settimeout实现过几秒加载一个php文件从而达到了实时显示在线人数的功能了。

希望本文所述对大家的php程序设计有所帮助。

本文实例讲述了php堆排序实现原理与应用方法。分享给大家供大家参考。具体分析如下:

这里以php作为描述语言较详细讲解堆排序原理,因保证程序可读性,故不做优化,php程序中关于堆的一些概念如下:

假设n为当前数组的key则,n的父节点为 n>>1 或者 n/2(整除);n的左子节点l= n<<1 或 l=n*2,n的右子节点r=(n<<1)+1 或 r=l+1

$arr=array(1,8,7,2,3,4,6,5,9);

数组$arr的原形态结构如下:

1
/
8 7
/ /
2 3 4 6
/
5 9
heapsort($arr);print_r($arr);

排序后生成标准的小顶堆结构如下:

1
/
2 3
/ /
4 5 6 7
/
8 9
既数组:array(1,2,3,4,5,6,7,8,9):

复制代码 代码如下:

function heapsort(&$arr)
{
//求最后一个元素位
$last=count($arr);
//堆排序中通常忽略$arr[0]
array_unshift($arr,0);
//最后一个非叶子节点
$i=$last>>1;

//整理成大顶堆,最大的数整到堆顶,并将最大数和堆尾交换,并在之后的计算中忽略数组后端的最大数(last),直到堆顶(last=堆顶)
while(true)
{
adjustnode($i,$last,$arr);
if($i>1)
{
//移动节点指针,遍历所有非叶子节点
$i--;
}
else
{
//临界点last=1,既所有排序完成
if($last==1)break;
//当i为1时表示每一次的堆整理都将得到最大数(堆顶,$arr[1]),重复在根节点调整堆
swap($arr[$last],$arr[1]);
//在数组尾部按大小顺序保留最大数,定义临界点last,以免整理堆时重新打乱数组后面已排序好的元素
$last--;
}
}
//弹出第一个数组元素
array_shift($arr);
}

//整理当前树节点($n),临界点$last之后为已排序好的元素
function adjustnode($n,$last,&$arr)
{
$l=$n<<1; //$n的左孩子位
if(!isset($arr[$l])||$l>$last) return ;
$r=$l+1; //$n的右孩子位

//如果右孩子比左孩子大,则让父节点的右孩子比
if($r<=$last&&$arr[$r]>$arr[$l]) $l=$r;
//如果其中子节点$l比父节点$n大,则与父节点$n交换
if($arr[$l]>$arr[$n])
{
//子节点($l)的值与父节点($n)的值交换
swap($arr[$l],$arr[$n]);
//交换后父节点($n)的值($arr[$n])可能还小于原子节点($l)的子节点的值,所以还需对原子节点($l)的子节点进行调整,用递归实现
adjustnode($l,$last,$arr);
}
}

//交换两个值
function swap(&$a,&$b)
{
$a=$a ^ $b;
$b=$a ^ $b;
$a=$a ^ $b;
}

希望本文所述对大家的php程序设计有所帮助。

这个主要闲的没事给大家写一下curd的具体应用,当然这里边主要讲curd,我做的是用户的增删改查,没有用三大自动

首先

复制代码 代码如下:


class IndexAction extends Action {
public function index(){
header(“Content-Type:text/html; charset=utf-8″);
$user=M(‘user');
$list=$user->select();
$this->assign(‘user',$list);
$this->display();
}

显示所有用户 ,首页做的注册

复制代码 代码如下:


form action=”/index.php/Article/add” method=”post”>
用户名<input type=”text” name=”username”>
密码<input type=”text” name=”password”>
<input type=”submit” value=”提交”>
</form>
<volist name=”user” id=”vo”>
用户名:<input name=”username” value=”<{$vo.username}>”>
密码:<input name=”password” value=”<{$vo.password}>”>
注册IP:<input name=”cip” value=”<{$vo.cip}>”>
注册时间:<input name=”ctime” value=”<{$vo.ctime}>”>
<a href=”/index.php/Article/del/id/<{$vo.id}>”>删除</a>
<a href=”/index.php/Article/edit/id/<{$vo.id}>”>更新</a>
<br>
</volist>

然后就是我们的删除方法 很简单 思路是这样的我们获取ID删除这个ID的就可以了

复制代码 代码如下:


if($user->where(‘$_GET[‘id']')->delete())

{
$this->success(‘删除成功');
}

这样就可以了

添加用户的方法

复制代码 代码如下:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jQuery学习笔记之2个小技巧【站长博客网】

    jQuery学习笔记之2个小技巧【站长博客网】

    2017-05-06 13:07

  • jQuery通过滚轮滚动动态加载图片

    jQuery通过滚轮滚动动态加载图片

    2017-05-05 17:05

  • jQuery EasyUI开发富客户端应用教程

    jQuery EasyUI开发富客户端应用教程

    2017-05-05 15:30

  • jQuery EasyUI教程

    jQuery EasyUI教程

    2017-05-05 15:26

网友点评