2014-09-05 41 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發送郵件。