PHP和MySQL:一项任务72小时到期


PHP and MySQL: 72 hours expiration for a task

我正在尝试用PHP和MySQL创建一个网站,在那里一个人被指派为另一个人执行任务。分配给完成任务的时间为72小时。

如果完成了,对方会确认。如果没有,我想采取某些行动(比如屏蔽他的账户、发送电子邮件、将任务分配给其他人等)。最好的方法是什么?

随着倒计时一秒一秒地进行,我想我将不得不每秒钟运行一个脚本。

您可以使用cronjob来检查截止日期,并最终发送电子邮件、阻止帐户等

尽管如此,如果您确实需要1秒的精度,您可能希望使用具有"无限"cicle的单个进程,并在其间进行一些睡眠。

如果您的服务器来自*nix系列,则可以使用cron/crontab。有关用法示例,请访问:http://en.wikipedia.org/wiki/Cron和https://help.ubuntu.com/community/CronHowto

很少有事情必须立即发生。如果你已经等了72个小时,那么在几分钟内采取行动就没那么重要了。

如果你真的希望某件事发生得如此之快,并且潜在事件之间总是有很长的时间间隔,我建议你不要使用cronjob,而是使用更类似@muc建议的东西——一个在shell脚本中定期运行的脚本,它会让它继续运行(只需在脚本结束时执行"exec$0",在脚本退出时重新运行脚本)。

检查数据库的脚本(例如PHP)也不必一直在运行。每当它发现几秒钟后要发生的事情时,它就会休眠,直到下一个事件发生。当它醒来时,它可以再次检查是否仍然需要它,然后执行相关作业。

<?php
$jobId = whatToRunNext();
if (! $jobId) {
  exit;
}
$secsToNextJob = howLongToNextJob($jobId);
if ($secsToNextJob > 0) {
   sleep($secsToNextJob);
   if (! jobStillRequired($jobId)) {
      exit;
   }
}
doJob($jobId);
exit;

将其封装在一个shell srpt中,使其保持运行,也许在bash脚本中稍作睡眠,这样做会很好,同时不会陷入一个长时间运行的cpu扼杀循环中。

如果我需要做这样的事情,我可能会按照以下步骤进行:

  1. 创建事件并计算最后期限

  2. 设置cronjob以在截止时间运行

  3. cronjob检查事件状态并采取操作

我认为这将是最有效的方法。

我正在尝试用PHP和MySQL创建一个网站,其中一个人被指派为他人执行任务。分配给的时间段完成任务需要72小时。

这些可能只是db vales

table_task

.id
.user_assigned
.strart_date
.end_date
.status
.desc

如果完成,对方会确认。如果没有,我想接受某些操作(如屏蔽他的帐户、发送电子邮件、分配把任务交给别人等)最好的方法是什么?

同样,具有已分配作业布局的某种形式的管理面板,应该要求"工作人员"将作业发布为"一个",然后"管理员"可以确认这一点。这一切都可以通过数据库"table_task.status"中的值进行管理

随着倒计时一秒一秒地进行,我想我将不得不运行每秒编写脚本。^--服务器自杀

运行cron最多一小时。如果你有1000个用户。然后这个cron将每秒运行1000次

一小时后,这是60000*60

如果你需要显示时间,可以使用某种形式的jQuery。这里有很多时钟脚本。