背景:,我目前正在建造一个摄影画廊,在那里我每2小时发布一张新照片。当我处理和上传每个图像并将它们的信息存储在数据库中时,我会运行一次检查,以查看当前是否有图像排队等待将来发布。这张支票的例子如下。
$last_added = mysql_query("SELECT date FROM images ORDER BY date DESC");
$last_added = mysql_fetch_row($last_added);
$last_added = strtotime($last_added[0]);
if($last_added < time() - 7200):
$time = time();
else:
$time = $last_added + 7200;
endif;
$timestamp = date( 'Y-m-d H:i:s', $time );
mysql_query("INSERT INTO images (name,date,artist,tags,id) VALUES ('".$name."','".$timestamp."','".$artist."','".$tags."','".$id."')");
基本上,它以最高的日期抓取图像,并检查它是过去的还是将来的。如果它是过去的,它用当前的时间戳标记最新的图像,如果它不是过去的,它用时间戳标记最新的图像,时间标记是数据库中最高的图像的2小时之后。
我有这样的设置,因为我没有时间添加新的图像每一天,这允许他们释放时间,保持网站的活力和更新,而我不在。
问题:然而,当我有时间的时候,我想添加更多的图片,而不是让他们在未来的30天,我想把间隔从2小时缩短到1 hour...then,可能从1小时到30分钟,等等。
是否有一种方便的方法首先检查最高日期的图像(比如今天+ 30天),然后让它检查开始填补间隔间隙,以便如果最高的时间戳符合我们的标准,下一张图像将在即将发布的下一张图像之后1小时被添加(填补它与2小时后将发布的图像之间的空白)。然后,之后的图像将在第二个未来排队的图像后1小时添加,以填充该间隔间隙,等等。
目标是我可以继续标记和添加图像,它会自动地让我为未来排队,并根据我已经排队的时间间隔自动缩短。
如果我还不够具体,请告诉我。如果需要的话我很乐意澄清。
发布于 2011-11-08 12:02:30
好的。我会这样做:
首先,创建两列..。一个“添加”日期时间,和一个“发布”日期时间。
添加的日期将是您将它们放在数据库中的日期,而发布的则是它们在站点上的帖子中实时显示的日期。
确定每天要张贴的图像的最小和最大数量。所以,如果你每天至少有1张,最多12张,你想让你的脚本提前7天考虑,你有90张图像准备就绪,然后你想要脚本放置84张图像,每12小时一张。如果你已经准备好了42张图片,脚本就会把所有42张图片放在一起,间隔4小时。如果你只准备了3张图片,脚本就会把3张放在间隔1天的地方。讲得通?
创建一个脚本,每小时运行一个cron作业.任何你觉得必要的东西。在此脚本中,执行以下操作:
SELECT COUNT(*) FROM images WHERE added IS NULL;
(这决定了有多少图像没有被放置,您必须使用with.)SELECT MAX(posted) FROM images;
(这决定了我们最后一次发布图像的时间。)(7/imagecount)*24
。如果这个值大于24 (意为每幅图像24小时),那么我们就使用24小时。如果小于2(意为每张图像2小时),则使用2。UPDATE images SET posted=NOW() WHERE id=12345
。否则,什么也不做。脚本的因此,这个脚本将每小时运行一次,并检查是否是发布新图像的时候了。如果不是的话,它什么也做不了。如果是的话,它只会张贴一个。在下一个小时,它将重新计算,从而考虑到任何新的图像或条件。
我希望这个流程是有意义的。毫无疑问,解决这个问题还有其他的方法,但我认为这与你想要的最接近。
https://stackoverflow.com/questions/8055735
复制