如何通过cron一次运行一个php脚本?

如何通过cron一次运行一个php脚本?,php,cron,Php,Cron,我有一个每分钟通过cron调用的php脚本。 但我不想在第一个呼叫仍在加载或正在进行时再次运行它 我曾尝试使用MYSQL,但有时我的问题是,脚本没有完成加载,因此无法在脚本完成后更新MYSQL。它将卡在装载中 谢谢在启动新文件之前,您必须使用锁定文件或检查它是否已在运行 看 我在那里采用了解决方案,并对其进行了一些修改: #!/bin/bash #change to the name of php-file SCRIPT='my-php-script.php' #get running pr

我有一个每分钟通过cron调用的php脚本。 但我不想在第一个呼叫仍在加载或正在进行时再次运行它

我曾尝试使用MYSQL,但有时我的问题是,脚本没有完成加载,因此无法在脚本完成后更新MYSQL。它将卡在装载中


谢谢

在启动新文件之前,您必须使用锁定文件或检查它是否已在运行

我在那里采用了解决方案,并对其进行了一些修改:

#!/bin/bash

#change to the name of php-file
SCRIPT='my-php-script.php'

#get running processes containing php-file
PIDS=$(ps aux | grep "$SCRIPT" | grep -v grep)

if [ -z "$PIDS" ]; then
  echo "Starting $SCRIPT ..."
  #change path to script to its real path
  /usr/bin/env php "/path/to/script/$SCRIPT" >> "/var/log/$SCRIPT.log" &
else
  echo "$SCRIPT already running."
fi

您应该首先尝试在命令行上运行它以查看它是否工作,然后将其添加到cron。根据系统的不同,它可能有一些不同的路径,无法找到正确运行所需的部件。

谢谢。我使用bash脚本。我注意到脚本正在运行,但它没有运行php文件。。。在bash脚本中有一个条件IF…#/bin/bash-PIDS=
ps aux | grep onlytask.php | grep-v grep
if[-z“$PIDS”];然后回显“Starting onlytask.php…”php/usr/local/src/onlytask.php>>/var/log/onlytask.log&否则回显“onlytask.php已在运行”。如果语句能够跳过运行,则程序已在运行。如果$PIDS变量未运行,则该变量为空,然后将匹配-z(为null),并且php文件可以安全运行。我已经用上面脚本的稍微修改版本更新了答案。