2

我需要从 wsdl 获取数据并定期存储在数据库中的 cron 作业。如何在单例中实现它以确保在最近结束之前没有创建新实例?

我使用文件来存储cron作业是否正在运行,但我认为应该存在更好的方法。在java中我们可以将Jar作为守护进程运行,因此它可以控制器是单例并且永远不会被杀死(如果被杀死,将创建一个新实例).如何用 PHP 或 Python 中的 out 文件实现它?

4

1 回答 1

2

如果您不喜欢 pid 文件锁定,则可以使用信号量,即使这是一种常见做法。另外,我建议使用flock/fcntl而不是pid 锁定文件。我认为这对你来说非常好。

至于 cron 作业中的 bash 锁定文件实践,您可以在此处查看一个良好的现有实践:

#!/bin/sh

lockfile="/tmp/cron_rsync.lock"
if [ -z "$flock" ] ; then
  lockopts="-w 0 $lockfile"
  exec env flock=1 flock $lockopts $0 "$@"
fi
于 2013-08-24T05:55:46.003 回答