php - 设置 cron 作业以根据投票值更新文章信息

标签 php mysql cron

我想设置一个 cron 作业,每 15 分钟执行一次。在深入描述这些查询之前,我将解释我的数据库是如何工作的。

我有 2 个表“故事”和“投票”。有关文章的所有信息(如标题、类别等)都存储在“故事”表中。与文章相关的所有投票都存储在“投票”表中,这并不奇怪。在投票表中,有一个名为“item_name”的字段,它对应于“stories”表中文章的“id”。最后,在“stories”表中,我有一个名为“showing”的字段,默认设置为 0。我想根据有多少个故事将其更改为不同的值投票文章有,但稍后会详细介绍。

这是我的数据库的结构:

故事表

enter image description here

<小时/>

投票表

enter image description here

<小时/>

好吧,现在当我清除数据库结构后,让我们开始讨论我的问题。我需要一个查询来查看显示 = 0 的所有文章并总结与特定文章相对应的投票。如果票数总和 = 10,则设置显示 = 1 如果票数总和 = -10,则设置显示 = 2。我不知道这样的查询会是什么样子,我真的不知道:/ 那么有人可以建议一个解决方案吗?

补充:我之前问过类似的问题,有些人建议每次投票时触发或更新数据库。但我宁愿用 cron job 每 15 分钟检查一次。 )))

编辑:只是为了让您更好地了解它是如何工作的)))

例如“故事”表中的这一行:

id| 12
st_auth | 作者姓名
st_date | 故事日期
st_title| 故事标题
st_category| 故事类别
st_body|故事正文
显示| 0 表示待批准,1 表示已批准,2 表示未批准

公司对投票表中的这一点做出回应:

id| 83
item_name| 12(文章 ID)
vote_value| 1 表示赞成 -1 表示反对 等等...

最佳答案

select sum(vt.vote_value), vt.item_name
from Votes vt
join stories st on st.id = vt.item_name
and st.showing = 0
group by vt.item_name

这应该为您提供所有显示 0 和总投票值的文章。之后,您可以逐行处理它们并根据需要更新投票。

添加: 我不是 PHP 程序员,我主要使用 PERL,但我想它必须是这样的:

<?php 
    $query = "select sum(vt.vote_value) as vote_value, vt.item_name from Votes vt join stories st on st.id = vt.item_name and st.showing = 0 group by vt.item_name";
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result))
    {
        if($row['vote_value'] > 9) {
            $showing = 1;
        }
        else if($row['vote_value'] < -9) {
            $showing = 2;
        }
        else {
            $showing = 0;
        }
        $query2 = "UPDATE `stories` SET `showing` = $showing WHERE `id` = '".$row['item_name']."'";
        mysql_query($query2); 
    }
?>

关于php - 设置 cron 作业以根据投票值更新文章信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609678/

相关文章:

php - html表格转sql表格

php - fopen数据存入数据库

javascript - Google 折线图 - 自动刷新数据库

php - MySQL:当表中的行数失控时会发生什么?

mysql - 根据 SQL 中的组过滤掉重复项

php - 在容器中运行 cron

javascript - 无法在 Sylius/Symfony 2 模式框中添加换行符

Mysql 将两个表列值加载到 Single 中

java - 在间隔的随机分钟内运行程序

php - 如何每天自动调用一个php脚本自动发送邮件