Функция работает, когда не вызывается в PHP - PullRequest
1 голос
/ 09 января 2012

Привет, я запускаю следующий скрипт, у меня проблема в том, что ежемесячные функции вызываются, даже если это не первый понедельник месяца?То, что должно происходить, это каждый день, каждый день, каждый понедельник, каждый понедельник, каждый месяц, ежемесячные.

Кстати, я назвал эти сценарии с помощью cron в те дни, так как мне приходится просить владельца сервера каждый раз настраивать задание cron, что является серьезной болью в тылу, так как он тратит много времени на его выполнение.так что проще, когда cron запускает скрипт каждый день, а остальное я контролирую с помощью php.

// SETS THE TIMEZONE TO UK TIME
date_default_timezone_set('Europe/London');

// DEFINES WEEKDAY AND DAY OF THE MONTH
$weekday = date('D');
$dayOfMonth = date('d');

// RUNS THE EVERY DAY FUNCTIONS TO MAIL USERS IN THAT GROUP EVERY DAY
gasoildailyemailer();
dervdailyemailer();
kerodailyemailer();
if ($weekday == 'Mon')
{

// RUNS THE WEEKLY FUNCTIONS TO MAIL USERS IN THAT GROUP EVERY WEEK
 gasoilweeklyemailer();
 dervweeklyemailer();
 keroweeklyemailer();
if ($dayOfMonth <=6)

// RUNS THE MONTHLY FUNCTIONS TO MAIL USERS IN THAT GROUP EVERY MONTH
gasoilmonthlyemailer();
dervmonthlyemailer();
keromonthlyemailer();
}

?>

<?php

function gasoildailyemailer() {
echo 'GAS OIL DAILY';
};
function dervdailyemailer() {
echo 'DERV DAILY';
};
function kerodailyemailer() {
echo 'KERO DAILY';
};

?>

<?php

function gasoilweeklyemailer() {
echo 'GAS OIL WEEKLY';
};
function dervweeklyemailer() {
echo 'DERV WEEKLY';
};
function keroweeklyemailer() {
echo 'KERO WEEKLY';
};

?>

<?php

function gasoilmonthlyemailer() {
echo 'GAS OIL MONTHLY';
};
function dervmonthlyemailer() {
echo 'DERV MONTHLY';
};
function keromonthlyemailer() {
echo 'KERO MONTHLY';
};

?>

Ответы [ 2 ]

1 голос
/ 09 января 2012

Вы пропустили скобки после if ($dayOfMonth <=6).

1 голос
/ 09 января 2012

Это то, что вы получаете за то, что не всегда используете фигурные скобки:

if ($dayOfMonth <=6) 
    gasoilmonthlyemailer();  // THIS IS INSIDE THE IF
    dervmonthlyemailer();    // BUT THIS IS OUTSIDE!
    keromonthlyemailer();    // THIS ONE TOO!

Исправьте это, добавив фигурные скобки, как вы кричите всегда делайте (предупреждение: здесь возможен религиозный аргумент; это простомое собственное мнение):

if ($dayOfMonth <=6) {
    gasoilmonthlyemailer();
    dervmonthlyemailer();
    keromonthlyemailer();
}

В качестве отступления: вы знаете, что только две из трех функций вызывались неправильно.Почему бы не объяснить это явно, чтобы все остальные извлекли выгоду из этого знания заранее?

...