PHP和MySQL:任务到期72小时

时间:2013-02-15 12:33:55

标签: php mysql

我正在尝试在PHP和MySQL中创建一个站点,其中一个人被分配为另一个人执行任务。分配完成任务的时间为72小时。

如果完成,另一个人将确认。如果没有,我想采取某些行动(比如阻止他的帐户,发送电子邮件,将任务分配给其他人等)。最好的方法是什么?

倒计时逐秒运行,我想我必须每秒运行一次脚本。

5 个答案:

答案 0 :(得分:1)

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

虽然,如果你真的需要一个persecond精度,你可能想要使用一个带有“无限”cicle的单个进程,并且有些进入中间。

答案 1 :(得分:1)

如果您的服务器来自* nix系列,则可以使用cron / crontab。请参阅以下网址的使用示例:http://en.wikipedia.org/wiki/Cronhttps://help.ubuntu.com/community/CronHowto

答案 2 :(得分:0)

如果我需要这样做,我可能会采取以下步骤:

  1. 创建活动并计算截止日期

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

  3. cronjob检查事件状态并采取措施

  4. 我认为这将是最有效的方式。

答案 3 :(得分:0)

  

我正在尝试在PHP和MySQL中创建一个人所在的站点   被指派为另一个人做任务。分配给的时间段   完成任务是72小时。

这些可能只是db vales

table_task

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

如果完成,另一个人将确认。如果没有,我想采取   某些操作(例如阻止他的帐户,发送电子邮件,分配   对其他人的任务等。)最好的方法是什么?

再一次,某个表格的管理员面板具有已分配作业的布局,“工作人员”应该被要求将作业发布为“完成”,然后“管理员”可以确认这一点。这可以通过db''table_task.status''

中的值来管理
  

倒计时逐秒运行,我想我必须跑一个   脚本每秒。   ^ - 服务器自杀

最多只运行一次cron。如果您有1000个用户。然后这个cron将以每秒1000的速度运行

在一小时内,这是60000 * 60

如果需要显示时间,请使用某些形式的jQuery。有很多时钟脚本。

答案 4 :(得分:0)

很少有事情必须立即发生。如果你已经等了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包裹起来以保持运行,也许在bash脚本中进行一次小睡眠,你会很好 - 而不是在一个非常长时间运行的cpu-killing循环中。