PHP服务器端计时器
Posted
技术标签:
【中文标题】PHP服务器端计时器【英文标题】:PHP server side timer 【发布时间】:2014-02-19 09:22:51 【问题描述】:我需要制作一个有倒计时计时器的页面。我希望计时器位于服务器端,这意味着当用户打开页面时,所有用户的计数器总是在同一时间。当计时器归零时,我需要能够运行另一个脚本,它会在重置计时器的同时做一些事情。
我怎样才能用 php 做这样的事情?
【问题讨论】:
必须有两个部分:一个 php 中的脚本,它将显示剩余时间(使用当前时间戳)和一个 js 脚本,用于对该 php 脚本进行 ajax 调用并更新页面内容 好的。将研究阿贾克斯。我在某处读到了一种叫做 Comet 的语言。有没有可能做到这一点? 【参考方案1】:您可以使用 Cron Jobs Ex: 为特定时间安排作业 30 08 10 06 * /home/sendtouser.php 30 – 30 分钟 08 – 08 上午 10 – 第 10 天 06 – 第 6 个月(六月) * – 一周中的每一天
【讨论】:
我需要能够在浏览器中显示计时器倒计时。计时器完成后,它需要运行脚本然后自动重置。这可以通过 cron 作业实现吗?【参考方案2】:从“用户何时打开页面”来看,页面不应该有自动更新机制吗?如果这不是您的意思,请查看 AJAX(如 cmets 中所述)或更简单的 html META 刷新。或者,使用 PHP 和 header()
http://de2.php.net/manual/en/function.header.php
方法,这里也有描述:
Refresh a page using PHP
对于计数器本身,您需要保存结束日期(例如数据库或文件),然后将当前时间戳与保存的值进行比较。
假设您的脚本文件夹中有一个包含 unix 时间戳的文件,您可以执行以下操作:
<?php
$timer = 60*5; // seconds
$timestamp_file = 'end_timestamp.txt';
if(!file_exists($timestamp_file))
file_put_contents($timestamp_file, time()+$timer);
$end_timestamp = file_get_contents($timestamp_file);
$current_timestamp = time();
$difference = $end_timestamp - $current_timestamp;
if($difference <= 0)
echo 'time is up, BOOOOOOM';
// execute your function here
// reset timer by writing new timestamp into file
file_put_contents($timestamp_file, time()+$timer);
else
echo $difference.'s left...';
?>
您可以使用http://www.unixtimestamp.com/index.php 来熟悉Unix 时间戳。
通往罗马的方式有很多种,这只是其中一种简单的方式。
【讨论】:
以上是关于PHP服务器端计时器的主要内容,如果未能解决你的问题,请参考以下文章