告诉 php 在特定时刻创建一个新对象,Cronjobs?
tell php to create a new object at certain moments in time, Cronjobs?
我正在尝试创建此应用程序,但我目前的知识使我无法构建它,希望您能帮助我!
场景
我正在创建某种乳制品应用程序。从用户按下开始按钮的那一刻起,一个对象就被创建了,用户可以稍后通过填写他的报告来编辑它。
现在用户每天只能写一份报告,所以必须在上午 0:00 将一个新对象添加到数据库中,然后他才能再次填写。
问题
如何告诉 php 在特定时刻创建新对象?
我想这样做:
- 一个页面,只有在到目前为止没有创建任何对象时才会显示。当按钮“Start journey is pressed”时,会创建一个新对象。
- 一个在时间 0:00 时添加对象的页面(*使用 cronjobs?)
- 一个显示所有创建日期并允许用户编辑它们的页面。
*到目前为止,我找到的唯一解决方案是使用 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;
}
我正在尝试创建此应用程序,但我目前的知识使我无法构建它,希望您能帮助我!
场景
我正在创建某种乳制品应用程序。从用户按下开始按钮的那一刻起,一个对象就被创建了,用户可以稍后通过填写他的报告来编辑它。
现在用户每天只能写一份报告,所以必须在上午 0:00 将一个新对象添加到数据库中,然后他才能再次填写。
问题
如何告诉 php 在特定时刻创建新对象?
我想这样做:
- 一个页面,只有在到目前为止没有创建任何对象时才会显示。当按钮“Start journey is pressed”时,会创建一个新对象。
- 一个在时间 0:00 时添加对象的页面(*使用 cronjobs?)
- 一个显示所有创建日期并允许用户编辑它们的页面。
*到目前为止,我找到的唯一解决方案是使用 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;
}