我的网站有一个视频库,其中只显示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周)
更新没有发生,虽然事件已经安排好了(我把它看作是这个数据库“Tables”正上方的一个小红色时钟,当我点击时钟时,程序被标记为ENABLED)。我编辑了事件以删除“myschema”(所以UPDATE vids SET ....)甚至删除了AND子句。没有错误被抛出,但事件似乎没有发生。
为什么这个事件肯定会在phpMyAdmin中“安排”,据我所知,没有运行?如果所有其他方法都失败了,我可以手动运行查询以停用这些超过2周的视频,但我希望看到此活动有效。
答案 0 :(得分:0)
我刚从我的网络托管服务(JustHost)收到了一封电子邮件。显然,root访问权限是必要的,以便能够安排一个事件并让它被执行...托管自己网站的另一个原因:)