2

我的网站有一个视频库,其中应该只显示 2 周或更短的视频。以前我运行一个简单的更新查询,只要任何用户来到这个页面就会运行如下:

$unixtime = time();

$query = mysqli_query($cxn, "UPDATE vids SET status = 'inactive' WHERE status = 'active' AND 1209600 < ($unixtime - uploadtime)");

我最近开始了解事件和存储过程,并认为只需在特定时间每 24 小时将此查询作为事件运行一次(并从当前找到此查询的页面中删除上面的查询),这将节省许多查询。我正在使用 phpMyAdmin v.4.1.8(共享主机)和 MySQL 5.1.73(自 MySQL 5.1.6 以来似乎已经存在事件支持)并且无法使其正常工作!这是我的查询(由于查询没有返回任何内容,我认为这是一个“事件”,尽管我知道“程序”也不需要返回任何内容):

CREATE DEFINER=`mysite`@`localhost` 
EVENT `videodeactivate` 
ON SCHEDULE EVERY 1 DAY 
STARTS '2015-02-21 10:45:00' 
ON COMPLETION PRESERVE ENABLE 
DO 
UPDATE myschema.vids SET status = 'inactive' 
WHERE status = 'active' 
AND 1209600 < (UNIX_TIMESTAMP() - uploadtime);

(注:1209600 秒 = 2 周)

更新没有发生,尽管事件已经被安排(我认为它是这个数据库的“表”正上方的一个红色轮廓的小时钟,当我单击时钟时,程序被标记为启用)。我已经编辑了事件以删除“myschema”(所以 UPDATE vids SET....),甚至删除了 AND 子句。没有抛出任何错误,但事件似乎没有运行。

为什么这个事件,据我所知,在 phpMyAdmin 中似乎是“预定的”,没有运行?如果一切都失败了,我可以手动运行查询来停用这些 2 周以上的视频,但我希望看到这个事件有效。

4

1 回答 1

0

我刚刚收到来自我的网络托管服务 (JustHost) 的电子邮件。显然,为了能够安排活动并执行它,root 访问权限是必要的......托管您自己的网站的另一个理由 :)

于 2015-02-21T22:52:09.340 回答