用于编辑 MODX Revo 中每 24 小时触发的每个资源的 "editedon" 字段的脚本

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... 上挂起,就像 "Hang in 'ere kid..."

这是怎么回事? 谢谢你。

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

Fatal error: Call to a member function getCollection() on a non-object in /path/script.php

然而,有些资源的 editedon 字段成功,但不是全部。这是为什么?

UPD2: 好的,脚本可能无法自行运行,因为没有特定于 MODX 的 类 和脚本中的所有内容,但是它清除缓存后似乎可以正常工作,因为它已分配给 OnBeforeCacheUpdate 事件。我还删除了 array('parent' => 0) 部分,它现在适用于所有资源(不仅仅是没有 children 的资源)。但是我如何每 24 小时 运行 呢? Cron 不是一个选项,因为脚本不能单独运行。

还在自言自语...这是有效的代码:

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

运行 通过 CronManager 额外的 MODX 就可以了。如果有人需要它。