PHP代码如下:(这里是采用了jsonp的跨域返回方式)
PHP
~~~
<?php
//设置重新获取分流时间 60 * 60 * 1 : (秒 * 分 * 时)
$expire_time = 60 * 60 * 1;
//设置要分流的微信号 多个微信号以逗号 , 分隔
$wechat_list = array("iyangyuanjian","aaa_0796z","a_0796z");
//用户不是第一次访问
if(isset($_COOKIE["wechat"]) && isset($_COOKIE["roundtime"])){
$wechat = $_COOKIE["wechat"];
$round_time = $_COOKIE["roundtime"];
//重新获取分流判断
if(time() - $round_time > $expire_time){
//重新获取分流微信号
$result = get_round_wechat();
} else {
//显示有效期内的分流微信号
$result = $_COOKIE["wechat"];
}
} else {
//重新获取分流微信号
$result = get_round_wechat();
}
//输出微信号
echo $_GET['callback'] . '(' . json_encode($result) . ')';
function get_round_wechat(){
//引入外部变量
global $wechat_list;
//不存在wechat_shunt.php就创建 分流文件
if(!file_exists("wechat_shunt.php")){
$wechat_shunt = array();
foreach($wechat_list as $k => $v){
//array($v,0,1,0)
//说明 array(微信号,显示次数,下一次是否显示 0:否,1:是)
$wechat_shunt[] = !$k ? array($v,0,1) : array($v,0,0);
}
//创建微信号分流队列
$wechat_shunt_code = var_export($wechat_shunt,true);
file_put_contents("wechat_shunt.php","<?php\r\nreturn ".$wechat_shunt_code.";");
}
//获取微信分流记录
$wechat_shunt = include("wechat_shunt.php");
//获取下一个要显示的微信号
foreach($wechat_shunt as $k => $v){
//显示的微信号
if($v[2]){
//记录要显示的微信号与获取时间
$result = array($v[0],time());
//指定下一个用户要获取的微信号
//如果是最后一个微信号则指定为第一个要显示的微信号
//否则显示当前微信号的下一个微信号
if($k == count($wechat_shunt)-1){
$wechat_shunt[0][2] = 1;
} else {
$wechat_shunt[$k+1][2] = 1;
}
//将当前微信号显示次数更新
$wechat_shunt[$k][1]++;
//将当前微信号显示标识移除
$wechat_shunt[$k][2] = 0;
}
}
//重新创建微信号分流队列
$wechat_shunt_code = var_export($wechat_shunt,true);
file_put_contents("wechat_shunt.php","<?php\r\nreturn ".$wechat_shunt_code.";");
//创建用户COOKIE记录,有效期为一天,跟超时没关系,只是为了记录cookie
setcookie("wechat", $result[0], time()+3600*24);
setcookie("roundtime", $result[1], time()+3600*24);
//返回要显示的微信信息
return $result[0];
}
~~~
html前端代码:
Markup
~~~
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试获取微信号</title>
<script src="//cdn.bootcss.com/jquery/1.11.1/jquery.js"></script>
</head>
<body>
<div class="js"></div>
<script>
$.ajax({
type: 'get',
url: 'http://blog.0796z.com/get_wechat.php',
dataType: 'jsonp',
success: function(data){
$(".js").html(data);
}
})
</script>
</body>
</html>
~~~
- 前端
- 技巧汇总
- 构建 Node + Webpack + React 热加载开发环境
- React
- Redux
- Webpack
- ES6
- HTML5+CSS3
- Javascript
- JS超简洁拖动代码
- jQuery
- 后端
- 技巧汇总
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
- PHP
- Xdebug不解之谜
- PHP时间获取
- PHP递归优化 使用匿名函数进行递归
- PHP 发起POST请求
- PHP获得数组的交集与差集
- PHP递归获取下级数组,可指定ID,一维数组
- PHP 判断是否为Get/Post/Ajax提交
- PHP实现分流队列平均显示信息
- PHP多维数组 指定列排序
- PHP 类Class详解 笔记记录
- PHP取整函数详解
- Node
- Elasticsearch
- 数据库
- 技巧汇总
- Mysql
- Mysql分区表实现
- Mysql union与union all 查询
- Mysql 表中表查询
- Mysql 分组查询 与 分组条件查询
- MySQL 添加列,修改列,删除列
- Mysql优化之:构建海量表,定位慢查询
- Mysql优化之:表的设计满足3NF
- Mysql优化常见方法
- Mysql存储过程详解
- 运维
- 技巧汇总
- Linux
- Linux Centos系统下 设置代理服务器上网
- Centos7增加开机启动脚本
- centos 挂载windows共享目录
- CentOS设置SSH Key登录
- Linux/CentOS单网卡绑定多个IP
- Windows
- Win10开机启动项设置全解攻略
- PuTTY连接Linux服务器经常断线解决方案
- Docker
- Docke启动文件 docker-compose.yml
- Docker命令简介(未完)
- Docker闲杂笔记
- Apache
- Nginx
- Nginx配置upstream实现负载均衡
- Nginx负载均衡学习
- IDE
- 技巧汇总
- WebStorm
- PHPStorm
- 协作
- 技巧汇总
- Git
- git 放弃本地修改 强制更新
- git编译安装与常用命令
- Svn