用于编辑 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 就可以了。如果有人需要它。
我需要一个简单的脚本来强制更改 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 就可以了。如果有人需要它。