2014-09-05 3 views
0

У меня есть php-файл, который будет работать в понедельник и вторник только в любое время между 9 и 10 утра.Работа с PHP и CRON и работающий php-файл периодически

Файл PHP управляется с помощью заданий Cron и у меня есть пакетный файл, который будет выполняться каждые 2 минуты и отправки почты (с помощью задачи Schedular Я бегу файл битой через каждые 2 минуты)

Проблема заключается в том:

Условие If удовлетворено между 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

старт "MailingList" "C: \ XAMPP \ PHP \ php.exe" -f C: \ XAMPP \ HTDOCS \ тест \ send_mail.php

+0

После выполнения функции вы должны сохранить некоторый флаг/дату в базе данных или плоский файл (например .txt), а в коде вы всегда должны проверить перед выполнением функции, установлена ​​ли дата или нет. вашего кода вы можете снова сбросить значение –

ответ

-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 в linux, а не решать отправлять электронную почту с php.