我正在尝试在PHP和MySQL中创建一个站点,其中一个人被分配为另一个人执行任务。分配完成任务的时间为72小时。
如果完成,另一个人将确认。如果没有,我想采取某些行动(比如阻止他的帐户,发送电子邮件,将任务分配给其他人等)。最好的方法是什么?
倒计时逐秒运行,我想我必须每秒运行一次脚本。
答案 0 :(得分:1)
您可以使用cronjob检查截止日期并最终发送电子邮件,阻止帐户等...
虽然,如果你真的需要一个persecond精度,你可能想要使用一个带有“无限”cicle的单个进程,并且有些进入中间。
答案 1 :(得分:1)
如果您的服务器来自* nix系列,则可以使用cron / crontab。请参阅以下网址的使用示例:http://en.wikipedia.org/wiki/Cron和https://help.ubuntu.com/community/CronHowto
答案 2 :(得分:0)
如果我需要这样做,我可能会采取以下步骤:
创建活动并计算截止日期
设置cronjob以在截止时间运行
cronjob检查事件状态并采取措施
我认为这将是最有效的方式。
答案 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循环中。