我在index.php中通过AJAX显示了timer.php的值。但是我担心这个性能,如果它是一个服务器杀手,如果有30个人在线,以及类似的事情。你建议我做一些编辑吗?
谢谢。
的index.php
<script language='JavaScript'>
setInterval( 'SANAjax();', 1000 );
$(function() {
SANAjax = function(){
$('#dataDisplay').load('timer.php');
}
});
</script>
<div id="dataDisplay"></div>
timer.php
function time_difference($endtime){
$days= (date("j",$endtime)-1);
$hours =date("G",$endtime);
$mins =date("i",$endtime);
$secs =date("s",$endtime);
$diff="'day': ".$days.",'hour': ".$hours.",'min': ".$mins.",'sec': ".$secs;
return $diff;
}
$future_time = mktime(0, 0, 0, 9, 19, 2011);
$now_time = strtotime("+2 hours");
$end_time = $future_time - $now_time;
$difference = time_difference($end_time);
if ($future_time <= $now_time ) { echo "Date reached"; } else { echo $difference; };
?>
答案 0 :(得分:1)
取决于您的服务器规格和客户端数量,这很快就会成为服务器杀手。
每秒多次调用一个文件会很快造成大量的负担,所以最佳实践要求使用javascript计时器倒计时。我特别喜欢这个:http://stuntsnippets.com/javascript-countdown/
对于jQuery实现:
<script type="text/javascript">
var myDate = new Date(); //Retrieve actual date
myDate.setTime(this.getTime() + (3600 * 2)); //Add two hours
$(document).ready(function() {
$("#time").countdown({
date: myDate.toGMTString(),
onComplete: function( event ){
$(this).html("completed");
},
leadingZero: true
});
});
</script>
<p id="time" class="time"></p>
这应该足够了,不再需要PHP调用,客户端会做所有事情。
答案 1 :(得分:0)
通过设置每秒的setInterval,你基本上就是说对于30个客户端,你将获得大约30 txn /秒的php服务器。很难说它是一个性能杀手,只是说你将不得不为这个简单的电话处理30tps。我首先要问一下你为什么用服务器端脚本做这个。您可以在页面加载时轻松地为html文件指定日期时间,并在浏览器中使用javascript进行倒计时。
答案 2 :(得分:0)
我使用jQuery倒计时http://keith-wood.name/countdown.html在我的页面上放置一个计时器,让用户知道他们何时会因为不活动而退出系统。
您可以将函数绑定到计数器到期事件。
http://code.google.com/p/jquery-countdown/ ...简单示例
http://keith-wood.name/countdown.html ......炫耀所有的花里胡哨......
它可以像第一个一样简单,也可以像第二个一样详细!
- =布赖恩