оператор if — сравнение проблем со значениями переполнения стека

У меня проблема со сравнением двух значений и разрешением изменения одного значения в операторе if. Но, конечно, когда я перезагружаю страницу, она снова получает первое значение. Я использую этот код, чтобы установить некоторую информацию в базе данных, когда машина включена или выключена.

$urlMachineON = 'http://192.168.0.150/awp/Shredder/PLCfiles/IOmachineActive.html';

// get content
$contentMachineON = file_get_contents($urlMachineON);

//remove first 2 characters
$truncate = substr($contentMachineON, 2);

//remove last 5 characters
$MachineOn = substr($truncate, 0, -5);
//MachineON can only be 1 or 0

$currentState = 2;

if ($MachineOn != $currentState)
{
$stmt = $conn->prepare("INSERT INTO machineactiviteit (Time, MachineStatus) VALUES(NOW(), ?)");

$stmt->bind_param('s', $MachineOn);

if ($stmt->execute() === TRUE)
{
$currentState = $MachineOn;
echo 'success';
}
else
{
echo $conn->error;
}

$stmt->close();
}
elseif($MachineOn == $currentState)
{
echo 'do nothing';
}

Поэтому, когда я делаю это, он всегда будет использовать оператор if, так как $currentState а также $MachineOn всегда отличаются друг от друга. В C # у вас есть что-то вроде компонента initalize, чтобы один раз установить значение на определенное значение. Но я не нашел ничего об этом в php. Итак, мой вопрос, могу ли я установить значение только один раз? Или я должен решить это по-другому?

Вот как это должно работать:
первая попытка до: currentState = 2; MachineOn = 0; после: currentState= 0; MachineOn = 0;
вторая попытка перед: currentState= 0; MachineOn = 0; после: currentState= 0; MachineOn = 0;
третья попытка до: currentState= 0; MachineOn = 1; после: currentState= 1; MachineOn = 1;
(Я могу изменить значение MachineOn с помощью кнопки).

-1

Решение

Просто сохраните значение $ currentState где-нибудь. Например, в файле или в базе данных.

    $currentState = file_get_contents('filepath'); // last saved state (check if is set!)
if($currentState !== $MachineOn) {
file_put_contents('filepath', $MachineOn); // Save current state
} else {
file_put_contents('filepath', 2); // Save other state
}

Это псевдокод. Не забудьте проверить, существует ли файл и имеет ли он значение.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]