Помогите, пожалуйста, разрешить небольшую проблемку.
Пример.
Есть метод для свойства "test":
if ($this->getProperty('test') <= (5000 > 0)) {
say('Тревога!', 2);
}
период обновления SNMP свойства "test" выставлено 3 минуты. Получается так, что каждые 3 минуты Алиса говорит Тревога! А как сделать, что бы она говорила один раз, пока "test" не станет больше 5000?
Просто есть потребность отправлять смс, но если они будут отправляться через каждые 3 минуты- это разорение -))
Пробовал ввести ещё одно свойство- не работает, т.е. как только через 3 минуты обновляется значение "test" и оно <= 5000, фраза повторяется вновь до бесконечности, пока не станет больше 5000:
if ($this->getProperty('test') <= (5000 > 0)) {
if (!$this->getProperty('alarm_sent')) {
$this->setProperty('alarm_sent',1);
say('Тревога!', 2);
}
} elseif ($this->getProperty('alarm_sent')) {
$this->setProperty('alarm_sent',0);
}
P.S. речь идет о частоте вращения кулера и когда обороты падают меньше 5000 - должна срабатывать тревога и смс оповещение.
Как выполнить один раз?
Модератор: immortal
-
- Сообщения: 119
- Зарегистрирован: Пн авг 24, 2015 11:24 am
- Откуда: Сочи
- Благодарил (а): 4 раза
- Поблагодарили: 14 раз
Re: Как выполнить один раз?
что-то не совсем понял вот это ($this->getProperty('test') <= (5000 > 0))
а если быть точнее то именно вот это (5000 > 0) ?
что подразумевается под этим выражением ?:)
думаю что так будет вернее:
а если быть точнее то именно вот это (5000 > 0) ?
что подразумевается под этим выражением ?:)
думаю что так будет вернее:
Код: Выделить всё
if ($this->getProperty('test') <= 5000) {
say('Тревога!', 2);
}
-
- Сообщения: 165
- Зарегистрирован: Чт ноя 13, 2014 8:56 pm
- Благодарил (а): 23 раза
- Поблагодарили: 7 раз
Re: Как выполнить один раз?
GreatBAO писал(а):что-то не совсем понял вот это ($this->getProperty('test') <= (5000 > 0))
а если быть точнее то именно вот это (5000 > 0) ?
что подразумевается под этим выражением ?:)
думаю что так будет вернее:Код: Выделить всё
if ($this->getProperty('test') <= 5000) { say('Тревога!', 2); }
Это не принимать отрицательных значений, точнее "5000" должны быть только положительными...
-
- Сообщения: 119
- Зарегистрирован: Пн авг 24, 2015 11:24 am
- Откуда: Сочи
- Благодарил (а): 4 раза
- Поблагодарили: 14 раз
Re: Как выполнить один раз?
просто объясню что бы вы понимали, ваше выражение гласит:
(5000 > 0) в данном случае = true так как 5000 больше 0
при проверке $this->getProperty('test') <= (true) получается следующее:
$this->getProperty('test') имеет какое-то значение и сравнивается уже с (true) то-есть true <= (true)
тем самым, будет всегда иметь положительный результат так как true = true
в вашем случае нужно сделать так
в таком случае, условие будет верным если $this->getProperty('test') будет больше 0 и меньше или равно 5000
Код: Выделить всё
($this->getProperty('test') <= (5000 > 0))
при проверке $this->getProperty('test') <= (true) получается следующее:
$this->getProperty('test') имеет какое-то значение и сравнивается уже с (true) то-есть true <= (true)
тем самым, будет всегда иметь положительный результат так как true = true

в вашем случае нужно сделать так
Код: Выделить всё
if(($this->getProperty('test') > 0 and $this->getProperty('test') <= (5000)))
-
- Сообщения: 165
- Зарегистрирован: Чт ноя 13, 2014 8:56 pm
- Благодарил (а): 23 раза
- Поблагодарили: 7 раз
Re: Как выполнить один раз?
Спасибо, значит упустил данный момент...GreatBAO писал(а):просто объясню что бы вы понимали, ваше выражение гласит:(5000 > 0) в данном случае = true так как 5000 больше 0Код: Выделить всё
($this->getProperty('test') <= (5000 > 0))
при проверке $this->getProperty('test') <= (true) получается следующее:
$this->getProperty('test') имеет какое-то значение и сравнивается уже с (true) то-есть true <= (true)
тем самым, будет всегда иметь положительный результат так как true = true
в вашем случае нужно сделать такКод: Выделить всё
if(($this->getProperty('test') > 0 and $this->getProperty('test') <= (5000)))