我需要从wsdl获取数据并定期存储在数据库中的cron作业。如何在单例中实现它以确保在最新结束之前没有创建新实例?
我使用文件存储是否运行cron作业,但我认为应该存在更好的方法。在java中我们可以运行Jar作为守护进程,因此它可以将控制器设置为单例并且永远不会被杀死(如果被杀死,则为新的实例将创建)。如何用PHP或Python中的out文件实现它?
答案 0 :(得分:2)
如果你不喜欢pid文件锁,你可以使用semaphores,即使这是一种常见做法。另外,我建议使用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