编辑脚本"editedon"在MODX Revo每24小时发射的每个资源的领域


Script to edit "editedon" field of every resource in MODX Revo firing every 24h

我需要一个简单的脚本来强制更改MODX Revo中每个资源的editedon字段。这是我目前所看到的:

$resources = $modx->getCollection('modResource',array('parent' => 0));
$mydate = date(%c);
foreach ($resources as $res) {
    $res->set('editedon', $mydate);
    $res->save();
}

只是为了测试脚本,我将其分配给OnBeforeCacheUpdate事件,因此每次清除缓存时我都可以检查结果。问题是,脚本本身挂在Console running...就像"挂在这里的孩子…"

怎么回事?谢谢你!

UPD:当脚本在浏览器中直接调用时,我得到这个错误:

致命错误:在/path/script.php中的非对象上调用成员函数getCollection()

然而,一些资源成功地拥有了它们的editedon字段,但不是全部。为什么呢?

UPD2:好吧,可能脚本不会自己工作,因为没有MODX特定的类和脚本内的所有这些,但它似乎在我清除缓存后工作,因为它被分配给OnBeforeCacheUpdate事件。此外,我删除了array('parent' => 0)部分,它现在适用于每个资源(不仅仅是没有孩子的资源)。但是我如何每24小时运行一次呢?Cron不是一个选项,因为脚本不能自己工作。

还在自言自语…下面是有效的代码:

$resources = $modx->getCollection('modResource');
$mydate = date(%c);
foreach ($resources as $res) {
    $res->set('editedon', $mydate);
    $res->save();
}

通过CronManager extra for MODX运行它,就可以了。如果有人需要的话。