PHP和MySQL:任务的72小时到期
我正在尝试用PHP和MySQL创建一个站点,其中一个人被指派为另一个人执行任务。分配给完成任务的时间为72小时 如果这样做,其他人将予以确认。如果没有,我想采取某些行动(比如阻止他的帐户、发送电子邮件、将任务分配给其他人等等),那么最好的方法是什么PHP和MySQL:任务的72小时到期,php,mysql,Php,Mysql,我正在尝试用PHP和MySQL创建一个站点,其中一个人被指派为另一个人执行任务。分配给完成任务的时间为72小时 如果这样做,其他人将予以确认。如果没有,我想采取某些行动(比如阻止他的帐户、发送电子邮件、将任务分配给其他人等等),那么最好的方法是什么 随着倒计时一秒一秒地进行,我想我必须每秒运行一个脚本。您可以使用cronjob检查截止日期,并最终发送电子邮件、阻止帐户等 尽管如此,如果您确实需要persecond精度,您可能希望使用具有“无限”循环的单个进程,并在其间使用一些休眠。如果您的服务器
随着倒计时一秒一秒地进行,我想我必须每秒运行一个脚本。您可以使用cronjob检查截止日期,并最终发送电子邮件、阻止帐户等
尽管如此,如果您确实需要persecond精度,您可能希望使用具有“无限”循环的单个进程,并在其间使用一些休眠。如果您的服务器来自*nix系列,则可以使用cron/crontab。请参见:和中的用法示例如果我需要这样做,我可能会按照以下步骤操作:
.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。这不是一个好主意。如果作业的运行时间超过一分钟,那么最终会导致许多作业同时运行,这是我见过的情况。这不太好。