1

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

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

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

4

5 回答 5

1

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

虽然,如果您确实需要每秒精度,您可能希望使用具有“无限”循环的单个进程并在其间进行一些睡眠。

于 2013-02-15T12:36:25.453 回答
1

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

于 2013-02-15T12:38:46.123 回答
0

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

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

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

  3. cronjob 检查事件状态并采取行动

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

于 2013-02-15T12:40:40.040 回答
0

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

这些可能只是 db vales

表任务

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

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

同样,具有分配工作布局的某种形式的管理面板,应该要求“工人”将工作发布为“完成”,然后“管理员”可以确认这一点。这都可以通过 db ''table_task.status'' 中的值进行管理

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

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

在一小时内,60000*60

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

于 2013-02-15T12:46:07.067 回答
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 sript 中,让它保持运行,也许在 bash 脚本中稍微休眠一下,你会很好 - 虽然不是在一个非常长时间运行的 CPU 杀死循环中。

于 2013-02-15T13:06:26.863 回答