crontab 命令 - 执行并发送电子邮件日志文件(有 2 个选项)

crontab command - execute and than email log file (with 2 options)

我需要每小时 运行 我的 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

如果您认为我应该做不同的事情,请解释并告诉我怎么做。 顺便说一句-我正在使用后缀。

好的,您可以通过编写 /运行ning 两个 PHP 脚本来解决您的问题。

  1. 现有脚本,只需添加写入文件,以CSV格式写入脚本的开始时间和结束时间。 [每个运行换行]
  2. 运行 另一个 "deamon" PHP 脚本每 x 分钟通过 crontab 解析 CSV 文件,脚本目标是:解析 CSV 文件并搜索开始时间和没有结束时间,如果 CSV 文件有问题,会发送电子邮件。

注意,CSV 文件中的最后一行可以是活动进程,因此请采取您认为应该完成的间隔或时间。

//Create another PHP file / class that sends an email and control it from the php code.

// the message
$msg = "First line of text\nSecond line of text";

// send email
mail("someone@example.com","My subject",$msg);

在您的代码中 PHP 可以中断什么?使用timeouts / try catch / reties机制来减少失败。

好的,这是我为解决问题所做的工作:

首先 - 确保将所有 shell 脚本写在 Linux 上(否则你的脚本会搞砸,你甚至看不到它),你可以设置你的使用 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,它将为您执行此脚本并向您的电子邮件地址发送通知:)

希望对大家有所帮助!