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服务器端计时器的主要内容,如果未能解决你的问题,请参考以下文章

为 Android 实现 Firebase 服务器端倒数计时器?

使用 Juggernaut 2 的服务器端计时器

js根据服务端返回的时间倒计时

Linux 安装php扩展 swoole

centos7下安装PHP swoole扩展

学习swoole的心得