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


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

我正在尝试创建这个应用程序,但我目前的知识阻止我构建它,希望你能帮助我!

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

现在用户每天只允许写一个报告,因此必须在0:00 am向数据库添加一个新对象,然后他可以再次填写。

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

我想这样做:

  1. 仅在尚未创建对象时显示的页面。当按下"开始旅程"按钮时,将创建一个新对象。
  2. 当时间为0:00时添加对象的页面(*使用cronjobs?)
  3. 显示所有创建的日期并允许用户编辑这些日期的页面。
到目前为止,我找到的唯一解决方案是使用cronjobs,但我不熟悉这些。cronjobs对我来说是正确的方法吗?我该如何使用它们(我正在MAMP上测试我的代码)?或者是否有可能仅使用php实现,以及如何实现?

非常感谢所有的帮助!lvRoy

是否有可能(在您的限制下)仅在日常第一次使用时生成此对象?当用户访问他的面板时,它会检查今天是否已经有一个对象,如果没有,那么它会创建这个对象?

如果这对你来说是可以的,那么你可以这样做:

首先,您可以为用户(在数据库/会话中)添加另一个名为"next_check"的属性,该属性将表示下次需要检查对象是否已创建的时间(日期或时间戳)。

在运行时,您将检查此属性是否低于当前时间,例如:

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;
}

我认为您根本不需要cronjobs(如果我理解正确的话)。您只需检查新报表的创建是否在当天已经创建了报表。如果答案是否定的,你可以用正确的数据在数据库中创建一个新项目,否则你将返回一个错误消息"已经为这一天创建了一个报告"。