我的代码是性能杀手吗?

时间:2011-08-18 01:01:56

标签: php javascript jquery datetime

我在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; };
?>

3 个答案:

答案 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 ......炫耀所有的花里胡哨......

它可以像第一个一样简单,也可以像第二个一样详细!

- =布赖恩