我应该在我的 PHP cron 作业中使用 Sleep 吗?


Should I use Sleep in my PHP cron job

我有一个PHP脚本作为每5分钟运行一次的cron作业,在脚本中,它对数据库进行查询并遍历记录:

$results = DB::query("SELECT id FROM category");
foreach ($results as $row) {
    // process the data, save data the a local file or database
    // should I have Sleep here?
}

我应该在循环结束时添加睡眠吗?因为我想知道如果我不在那里进行睡眠调用,当这个 PHP 运行时,服务器(也是一个 Web 服务器)会被占用吗?(在PHP脚本运行时,服务器必须处理其他请求)

与其添加睡眠(如@MarkBaker在注释中提到的睡眠仍然保存内存和记录锁),不如考虑将您的 cron 作业打包成更小的工作片段。

只需对每个 cronjob 执行一项检查(删除旧会话、删除过时的、不活跃的用户 etc.tt)。

这将使服务器保持活动状态,同时仍然完成所有工作。