我需要每小时运行一下我的php代码,而且我对crontab / cronjob的了解非常糟糕。 我希望脚本每小时运行并发送2个案例的电子邮件:成功和失败。 我写了这段代码,但我不知道它对crontab是否有用(我认为它不起作用):
0 * * * * php <full-path-script>
if [ “$?” = “0” ]; then
echo “Backup Process was Successful. A new log file <filename>.txt has been
created” | mail -s “Backup Status Successful” <email> -A <path>
<filename>.txt
else
echo “Backup Process Failed. Please contact System Administrator. A new log
file <filename>.txt has been created” | mail -s “Backup Status Failed”
<email> -A <path><filename>.txt
如果你认为我应该做的不同,请解释并告诉我如何。 顺便说一句 - 我正在使用postfix。
答案 0 :(得分:0)
好的,您可以一起编写/运行两个PHP脚本来解决您的问题。
请注意,CSV文件中的最后一行可以是活动进程,因此请考虑您认为应该进行的间隔或时间。
crtl+F
您的代码中可以在PHP中断什么?使用超时/尝试catch / reties机制来减少失败。
答案 1 :(得分:0)
好的,这就是我为解决问题所做的工作:
首先 - 确保在Linux上编写所有shell脚本(否则你的脚本会搞砸,你甚至无法看到它),你可以使用vmware或其他程序设置自己的Linux。
这是我的shell脚本:
`#!/bin/bash
/usr/bin/php <full-path-script>
if [ “$?” = “0” ]
then
echo “Backup Process was Successful. A new log file `date "+\%Y-\%m-\%d-
\%H"`.txt has been created” | mail -s “Backup Status Successful” <email-
address> -a <path>`date "+\%Y-\%m-\%d-\%H"`.txt
else
echo “Backup Process Failed. Please contact System Administrator” | mail -s
“Backup Status Failed” <email-address> -a <path>`date "+\%Y-\%m-\%d-\%H"`.txt
fi`
为了确保您的脚本会将错误发送到$?你应该避免使用die();关于错误,实际上你应该使用exit(1); (它会在$中加1?所以我们知道脚本无法运行)。
不要忘记制作cronjob,为您完成此脚本的任务,并将通知发送到您的电子邮件地址:)
我希望这对任何人都有帮助!