项目有个需求 :
页面上有一个根据不同的时间显示不 同的购买人数 !人数的值 要现在总是之前的多!从开始到结束时间! 这个代码需要可以复用 !因为之前很多很多这样的需求,而且最好降低下次修改的代码量 。
设计思想
第一次的时间+随机数
第二次时间=第一次时间+随机数
第N次时间=N-1+rand();
同理 显示购买人数也是这样:
贴代码吧
<?php
date_default_timezone_set('Asia/Shanghai');
require_once 'cache.php';
require_once 'data.php';
//开始和结束时间
$strattime = "2013-05-13 00:00:00";
$endtime = "2013-05-20 23:59:59";
//当前时间
$nowtime = time();
$lasttime = strtotime($strattime);
$nexttime = $lasttime+rand(1000, 3000);
//判断数据 如果不存在 就初始化
if (!isset($last_array)){
$last_array = array(
array(
"num"=>0,
"lasttime"=>$lasttime,
"nexttime"=>$nexttime,
"key" =>0
)
);
$file="data.php";
cache_write($file,$last_array,'last_array',false);
}
echo "下一个时间 是:".date('Y-m-j H:i:s ',$nexttime)."<br>";
echo "当前时间 是:".date('Y-m-j H:i:s ')."<br>";
//获取到 数组的最后一个元素
$endarray= end($last_array);
echo "数据时间 是:".date('Y-m-j H:i:s ',$endarray['lasttime'])."开始<br>";
echo "数据时间 是:".date('Y-m-j H:i:s ',$endarray['nexttime'])."结束<br>";
//如果处于这个时间段则随机显示
if($nowtime>strtotime($strattime) && $nowtime<strtotime($endtime)){
if ( $nowtime > $endarray['nexttime']){
$number = $endarray["num"]+rand(1, 6);
//修改文件
$arr = array(
"num"=>$number,
"lasttime"=>$endarray['nexttime'],
"nexttime"=>$endarray['nexttime']+rand(1000, 3000),
"state" =>0
);
array_push($last_array, $arr);
$file="data.php";
cache_write($file,$last_array,'last_array',false);
}
$endarray= end($last_array);
//当前次数
$nowNum = $endarray['num'];
}else {
//当前次数
$nowNum = $endarray['num'];
}
echo $nowNum;
cache.php 文件
<?php
//写入
function cache_write($filename,$values,$var='rows',$format=false){
$cachefile=$filename;
$cachetext="<?php\r\n".'$'.$var.'='.arrayeval($values,$format).";";
return writefile($cachefile,$cachetext);
}
//数组转换成字串
function arrayeval($array,$format=false,$level=0){
$space=$line='';
if(!$format){
for($i=0;$i<=$level;$i++){
$space.="\t";
}
$line="\n";
}
$evaluate='Array'.$line.$space.'('.$line;
$comma=$space;
foreach($array as $key=> $val){
$key=is_string($key)?'\''.addcslashes($key,'\'\\').'\'':$key;
$val=!is_array($val)&&(!preg_match('/^\-?\d+$/',$val)||strlen($val) > 12)?'\''.addcslashes($val,'\'\\').'\'':$val;
if(is_array($val)){
$evaluate.=$comma.$key.'=>'.arrayeval($val,$format,$level+1);
}else{
$evaluate.=$comma.$key.'=>'.$val;
}
$comma=','.$line.$space;
}
$evaluate.=$line.$space.')';
return $evaluate;
}
//写入文件
function writefile($filename,$writetext,$openmod='w'){
if(false!==$fp=fopen($filename,$openmod)){
flock($fp,2);
fwrite($fp,$writetext);
fclose($fp);
return true;
}else{
return false;
}
}
data.php就是一个空文件 供index.php 写入数据就可以了