获取服务器端时间的处理思路和代码 涉及PHP JavaScript Yii

来源:互联网 发布:java用什么软件编程 编辑:程序博客网 时间:2024/06/14 14:33

写在前面
因为js只能操作客户端的东西。在客户端时刻显示并更新服务器的时间应该是不可能的,因为会由于网络延迟的因素使得时间不精确。

这个是和截止时间进行比较的。以服务器时间为基准,和截止日期进行比较判断。如果在截止日期之前,则可以进行提交保存的操作,否则提示已经超时。
采取的方式是在用户提交时在服务器端的后台程序中进行判断,而不是借助前端的JS。

另外如果是考试倒计时的话,可以采用先从服务器端获取时间,然后开始计数。页面刷新或者退出的时候对累计的时间也进行提交,并存储在服务器中。服务器端下一次加载操作页面的时候,同时传递上一次累计的时间,页面对时间开始继续计数,直到到达考试时间。

其余网上给的参考:
打个比方,可以使用ajax每秒钟获取服务器的时间,然后再显示出来,但是可能这个用户的网络延迟比较厉害,他请求的这个时间过了两三秒才返回给客户端,那这样更新时间就不精确了。
也可以这样,第一次从服务器那里获取时间,然后再客户端用js,每秒累加数,就是以获取服务器的那个时间为起掉,用客户端代码每秒累加这个时间

最后补充下:
PHP时间获取函数是从服务器端的时间获取;
JS时间获取函数是从客户端的时间获取;
如果两者时间没有统一,那么简单的凭借客户端的时间来判断是否超期是不现实的做法;

还有你们可能要的代码

html:<input type="button" class="btn btn-default" role="button" value="保存"                            onclick ="homeworkButton('save')" />&emsp;                     <input type="button" class="btn btn-default" role="button" value="提交"                                    onclick ="homeworkButton('submit')" /> //javaScript//用的ajax请求function homeworkButton(buttonType){              $.ajax({              url: "/model/actionName",               type : "POST",              data : { "aaa":aaaa,//你的想传递的参数                    },              dataType : "text",                                                  async : true,               success : function(mydata) {//服务器端返回的结构mydata                            if(mydata == false){                    //提交保存时已经和服务器的时间相比,超出截止日期,超期了                                                        }else{                    //提交保存成功后续操作                }            },                                                 error : function() {  //提交失败了                alert("calc failed");              }          });}//PHP://我用的是Yii框架//这段是上面ajsx请求的url对应的model下的Controller里面actionName函数的部分内容[Yii 1.1版本控制器视图与ajax的使用方式](http://blog.csdn.net/xujing19920814/article/details/70228796) if($dealModel->DeadlineJudge($deadline)){//未超期            //如果用户点击“保存”,若是新开始的数据库新增一条记录,并设置状态为保存,如果是“提交”修改的数据库update记录        $response = $model->functionName($params);                     }else{     $response["datebase"] = false; }echo $response["datebase"];
原创粉丝点击