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