【问题标题】:How to create a CRON job and set it for every 30 minutes or hour and then cancel it after 5 intervals php如何创建一个 CRON 作业并将其设置为每 30 分钟或每小时一次,然后在 5 个间隔 php 后取消它
【发布时间】:2020-01-12 15:57:24
【问题描述】:

所以这就是我想要完成的事情: 用户选择他们希望他们的帖子多久移动到页面顶部,无论是每 30 分钟、每小时还是每 2 小时等。他们将能够选择执行此操作的次数。因此,如果他们选择它在 5 小时内每小时更新一次,它会将数据库中的日期/时间更新为当前时间,然后在接下来的 5 小时内每小时更新一次该时间,并在 5 小时后取消它。

我正在考虑运行这样的 PHP 脚本来更新表格,因为广告是按日期 DESC 显示的:

<?php
//cronjob.php
$id = $_SESSION['ad_id'];
$date = date('Y-m-d H:i:s');
$query = "UPDATE ads SET ad_date = :date WHERE ad_id = :id";
?>

是否有最好的方法来做到这一点,或者用户选择的 CRON 作业是否会在服务器上造成过多的负载,以至于用户无法连续设置 CRON 作业。

我看到了这种方法,想知道是否可以为此目的进行设置。我还在熟悉 CRON 作业。

How to start/stop a cronjob using PHP?

我将在 Godaddy 的服务器上进行设置:

Godaddy Cron jobs

感谢您的帮助。

【问题讨论】:

  • 如果在 CLI 上运行,则没有 $_SESSION
  • @Martin Zeitler,感谢您提供的信息,我将在 Godaddy 服务器上进行设置,并链接到 Godaddy cron 作业布局的图像。

标签: php mysql


【解决方案1】:

一种方法是将所需的更新存储在一个新的数据库表中,其中包含诸如帖子id、更新次数、间隔、剩余多少更新、第一次更新应该发生的时间等字段(或下次更新时间)。

然后,创建一个 php 脚本,从该表中获取数据并对每个帖子采取必要的操作。检查是否是时候更新帖子,如果是则更新,否则不要(检查时间精确到分钟,不要检查秒。如果可以,这次用 SQL 而不是 php 检查以减少数据被取走)。最好在单个查询中执行所有更新以最大限度地提高效率。

然后在服务器上设置一个 cron 作业,每分钟或您需要的任何最小时间间隔运行此 php 脚本。

这样,你可以只做一个 cron 任务?

如果你需要更高的效率,那么在这个脚本的最后,检查是否有更多的更新挂起,如果没有,则删除 cron 作业。然后,设置您的代码,以便每当用户创建新更新时,检查 cron 作业是否存在,如果不存在则创建它(这个额外的动态 cron 作业仅用于效率怪胎。如果有频繁的更新请求,最好避免创建/删除 cron 作业)

【讨论】:

  • ?????????
猜你喜欢
  • 2017-05-08
  • 2022-12-18
  • 1970-01-01
  • 2018-04-27
  • 2018-10-17
  • 2013-11-27
  • 2020-07-01
  • 1970-01-01
  • 2015-05-12
相关资源
最近更新 更多