if语句有限制php

时间:2011-04-28 17:27:41

标签: php if-statement

我这是为了检查我的课程安排,以便在没有课时提醒我。我把它设置在一个cron作业上来检查每一个小时,但我的问题是,当没有课程时,我会一整天都收到警报,除非我禁用cron作业,否则无法阻止它。 我想知道的是我如何将这一天限制为仅限5个警报?

$source = file_get_contents($website);
preg_match('#<classtime>(.*?)</classtime>#', $source, $match);

    if (strlen($match[1])<32) {
        mail('XXXXXXXXXX@txt.att.net', 'REMINDER!', 'No Class');
    }
    else

    if (strlen($match[1])>32) {
        mail('XXXXXXXXXX@txt.att.net', 'REMINDER!', 'No Class');
    }

    else {
        echo "Check Class Schedule";
    }

4 个答案:

答案 0 :(得分:0)

保存文本文件(或使用数据库)以更新当天发送警报的次数, 如果大于5,则不发送警报

答案 1 :(得分:0)

将发送的警报计数存储在某个文件中,每次检查时都会增加,并且如果计数>&gt;则不发送警报。 5.午夜过后,将计数重置为0.

答案 2 :(得分:0)

快速简单的答案是创建一个文件,您可以读写。例如

while (( $fp = fopen ($counterfile,"r+")) == false)
{ usleep(5);}
       while (!flock($fp,2))
{ usleep(5); }
$data = fread($fp,filesize($counterfile));
if (rewind($fp)!=0)
{
        $data++;
        fwrite($fp,$data,strlen($data));
}
flock($fp,3);
fclose($fp);

如果每次遇到“No class”senario时都使用它,一旦达到5,如果读取为5,则不再发送任何消息。然后为了保持简单,在午夜有一个cron作业将“0”回显到文件中。

答案 3 :(得分:0)

在过去24小时内检查不超过5封电子邮件。可以大规模改进,它需要错误处理,但它应该工作:

$log_file = 'log.txt';
$log = file_get_contents( $log_file );
$timestamps = array_splice( explode( PHP_EOL, $log ), -5, 1 );
if ( count( $timestamps > 5 ) )
    {
    if ( end( $timestamps ) == '' )
        {
        array_pop( $timestamps );
        }
    $fifth_from_last_email = ($timestamps[0]);
    $time_24_hours_ago = time() - 3600 * 24;
    if ( $fifth_from_last_email < $time_24_hours_ago )
        {
        $fp = fopen( $log_file, 'a+' );
        fwrite( $fp, time() . PHP_EOL );
        fclose( $fp );
        mail( 'XXXXXXXXXX@txt.att.net', 'REMINDER!', 'No Class' );
        }
    }