PHP和MySQL:任务的72小时到期

PHP和MySQL:任务的72小时到期,php,mysql,Php,Mysql,我正在尝试用PHP和MySQL创建一个站点,其中一个人被指派为另一个人执行任务。分配给完成任务的时间为72小时 如果这样做,其他人将予以确认。如果没有,我想采取某些行动(比如阻止他的帐户、发送电子邮件、将任务分配给其他人等等),那么最好的方法是什么 随着倒计时一秒一秒地进行,我想我必须每秒运行一个脚本。您可以使用cronjob检查截止日期,并最终发送电子邮件、阻止帐户等 尽管如此,如果您确实需要persecond精度,您可能希望使用具有“无限”循环的单个进程,并在其间使用一些休眠。如果您的服务器

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

如果这样做,其他人将予以确认。如果没有,我想采取某些行动(比如阻止他的帐户、发送电子邮件、将任务分配给其他人等等),那么最好的方法是什么


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

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


尽管如此,如果您确实需要persecond精度,您可能希望使用具有“无限”循环的单个进程,并在其间使用一些休眠。

如果您的服务器来自*nix系列,则可以使用cron/crontab。请参见:和

中的用法示例如果我需要这样做,我可能会按照以下步骤操作:

  • 创建事件并计算截止日期

  • 设置在截止时间运行的cronjob

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

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

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

    这些可能只是db vales

    表2任务

    .id
    .user_assigned
    .strart_date
    .end_date
    .status
    .desc
    
    如果这样做,其他人将予以确认。如果不是的话,我想 某些操作(如阻止他的帐户、发送电子邮件、分配 将任务交给其他人等)完成此任务的最佳方法是什么

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

    随着倒数计时一秒一秒地进行,我想我必须进行一次 每秒钟写一次脚本。 ^--服务器自杀

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

    一小时内,这是60000*60


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

    几乎没有什么事情必须立即发生。如果你已经等了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;
    

    谢谢你这么快的回答!但是每隔一秒左右通过Cron运行一个脚本安全吗?正如Dainis Abols所建议的,最好在某个地方设置截止时间,精确到秒。然后你的Cron只会在72小时后启动一次。如果用户提前完成任务,你将使用一些标准的PHP脚本通知您。简言之,当用户强制执行某项任务时,您将为他创建一个新的cron作业,该作业将在72小时内启动。这可以通过PHP脚本完成。示例如何完成:但将有多个任务同时运行,在不同的时间启动。就像在电子商务网站中,购买的物品将在该网站上被删除在一个时间限制内完成。但是如果买家在同一时间确认交货,倒计时就会停止。在不同的时间会有很多这样的任务分配给不同的人。我需要一些自动化的东西。确切地说,你可以自动创建短时间的cronjobs。你能给我一个链接,让我学会如何做吗?Google在自动创建cronjobs上没有显示任何内容。即使我可以在过期时更新数据库中的两条记录,这也很好。如果我可以更新一个值,指示作业超时,另一个值指示任务分配的空闲时间,这就足够了。但我需要在最后一秒之前做到准确。非常感谢!我正在考虑每隔一分钟左右运行一次cronjob。这不是一个好主意。如果作业的运行时间超过一分钟,那么最终会导致许多作业同时运行,这是我见过的情况。这不太好。