告诉 php 在特定时刻创建一个新对象,Cronjobs?

tell php to create a new object at certain moments in time, Cronjobs?

我正在尝试创建此应用程序,但我目前的知识使我无法构建它,希望您能帮助我!

场景

我正在创建某种乳制品应用程序。从用户按下开始按钮的那一刻起,一个对象就被创建了,用户可以稍后通过填写他的报告来编辑它。

现在用户每天只能写一份报告,所以必须在上午 0:00 将一个新对象添加到数据库中,然后他才能再次填写。

问题

如何告诉 php 在特定时刻创建新对象?

我想这样做:

  1. 一个页面,只有在到目前为止没有创建任何对象时才会显示。当按钮“Start journey is pressed”时,会创建一个新对象。
  2. 一个在时间 0:00 时添加对象的页面(*使用 cronjobs?)
  3. 一个显示所有创建日期并允许用户编辑它们的页面。

*到目前为止,我找到的唯一解决方案是使用 cronjobs,但我不熟悉这些。 cronjobs 是适合我的正确方法吗?我该如何使用它们(我正在 MAMP 上测试我的代码)?或者是否有可能仅通过 php 到达那里,如何到达那里?

非常感谢所有帮助! lvRoy

我认为您根本不需要 cronjobs(如果我理解正确的话)。您只需检查新报告的创建,无论他们当天是否已经创建了报告。如果答案是否定的,您可以使用正确的数据在数据库中创建一个新项目,否则您 return 一个错误消息 "already created a report for this day".

Could it be possible (with your restriction) to generate this object only at the daily first use ? When the user access his panel, it would check there is already a object (or not) for this day and if not then it would create this object ?

如果这对你来说没问题,那么你可以这样做:

首先,您可以为名为 "next_check" 的用户(在 database/session 中)添加另一个 属性,它代表您需要检查的下一个时间(日期或时间戳)对象已创建。

在运行时,你会检查这个 属性 是否低于当前时间,例如:

if ($user['next_check'] <= time()) {
   //create task
}

如果您需要创建此任务(条件为真),那么您将创建您的对象并将 "next_check" 值更新为 time()。否则,你什么都不做。

请注意,此解决方案会丢失您的对象的历史记录,因为如果用户 10 天未访问此应用程序,则 10 天内不会创建任何对象,但当他最终登录您的应用程序时只会创建 1 个对象。

您当然可以改进它以每天生成一个对象,即使用户没有通过在 "next_check" 低于 time() 时迭代条件访问您的应用程序。

while ($user['next_check'] <= time()) {
   //create object
   $user['next_check'] += 3600 * 24;
}