2014-09-05 97 views
0

我有一个php文件,只能在周一和周二在9点到10点之间运行。处理PHP和CRON并定期运行php文件

PHP文件通过Cron作业控制,我将运行每2分钟和发送邮件(使用任务程序器,我运行,每2分钟bat文件)

的问题是一个批处理文件:

如果条件在9点到10点之间得到满足并重复发送邮件。我希望myMondayTuesdayMailList()函数每天只能运行一次,方法是设置一些标志或通过某种方式来处理此问题。换句话说,send_mail.php中有很多函数正在运行,函数myMondayTuesdayMailList()应该被执行只有周一和周二只有一次,即使页面刷新/重新加载通过cron一次又一次(我知道我需要设置一些标志或变量,但我现在是空白的,帮助我)。

我怎样才能做到这一点

send_mail.php

<?php 
    $get_day = date('D'); 
    $get_time = date('H'); 
    if(($get_day == 'Mon' and $get_time >=9 and $get_time <= 10) || ($get_day == 'Tue' and $get_time >=9 and $get_time <= 10)){ 
    { 
    myMondayTuesdayMailList(); 
    } 

    function myMondayTuesdayMailList(){ 
    ....... my query and php stuffs to send mail.......... 
    } 

    function testfunction1(){ 

    } 

    function testfunction2(){ 

    } 
    ?> 

cron.bat

启动 “邮件列表”, “C:\ XAMPP \ PHP \ php.exe的” -f C: \ XAMPP \ htdocs中\测试\ send_mail.php

+0

执行该功能后,必须将某些标志/日期存储到数据库或平面文件(例如.txt)中,并且在代码中,在执行函数之前必须始终检查是否设置日期....在其他部分的代码你可以重新设置值 – 2014-09-07 08:46:45

回答

-1

试试这个:

$once_t=false; 
if(($get_day == 'Mon' and $once_t==true and $get_time >=9 and $get_time <= 10) || ($get_day == 'Tue' and $get_time >=9 and $get_time <= 10)){ 
myMondayTuesdayMailList(); 
} 

function myMondayTuesdayMailList(){ 
....... my query and php stuffs to send mail.......... 
$once_t=true; 
} 
-1

你可以简单地在windows和crontab中使用windows任务调度程序而不是决定从php发送邮件。