Skip to main content
 首页 » 编程设计

php之使用 PHP 或 Python 的 Cron 作业

2024年11月01日29zhujiabin

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

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

请您参考如下方法:

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

关于直接从 cron 作业中锁定文件的做法,您可以在此处查看现有的良好做法:

#!/bin/sh 
 
lockfile="/tmp/cron_rsync.lock" 
if [ -z "$flock" ] ; then 
  lockopts="-w 0 $lockfile" 
  exec env flock=1 flock $lockopts $0 "$@" 
fi