Неверный ответ на запрос PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Неверный ответ на запрос PHP

Сообщение Anonymous »

У меня есть веб-страница, которая контролирует и вводит состояния переключателей в базу данных.
Я подтверждаю, что это работает.
Существует программа на PHP чтобы прочитать состояния переключателя из базы данных с помощью команды Get и отправить эти данные в формате json на удаленный микропроцессор.
Когда я сижу за Nat, ESP32 периодически вызывает, чтобы получить их. переключать состояния и соответствующим образом изменять состояния контактов процессора для управления.
По опыту, опрос данных Json на уровне микропроцессора и изменение состояния контактов также работают.
Проблема: я могу вызвать php напрямую через веб-интерфейс (Chrome, Firefox) и точно получить показания состояния контактов в режиме реального времени.
Однако при выполнении того же запроса через Esp первоначальные показания при запуске точны. но последующие изменения иногда получаются беспорядочно, но обычно повторяют исходное состояние. Это было подтверждено печатными ответами на уровне микропроцессора.
Это пропадет через разное время, после чего показания на этот момент станут значениями по умолчанию.
Выключение и перезагрузка микропроцессора не имеет никакого значения - как ни странно, по умолчанию он возвращается к последнему исходному состоянию.!
Как будто состояния через вызов Esp где-то кэшируются и повторяются в отличие от прямой веб-запрос через PHP, который показывает изменения.
Это проблема со скриптом? и любые идеи, как это исправить.
Код:


Служба хостинга (Blue Host) утверждает, что это проблема со скриптами. Кеширование сервера было очищено без изменения ответа. Я не могу проверить журналы базы данных, поскольку это учетная запись общего хостинга.
Меня беспокоит постоянство своевременного ответа. Иногда это работает, иногда просто зависает.
Ниже приведены выдержки из кода ESP, если это как-то повлияет
#include
#include

//Other usual libraries

// Define GPIO pins (adjust these to match the configuration)
const int gpioPins[] = { 12, 13, 14, 17, 18, 19, 26, 27, 32, 33 }; // GPIO pins, adjust as needed
const int numPins = sizeof(gpioPins) / sizeof(gpioPins[0]);

TaskHandle_t Task1; // program Heartbeat
TaskHandle_t Task2; // Read Switch State
TaskHandle_t Task3; // wifi watchdog
TaskHandle_t Task4; // email engine & pump status

//---------------------------------

// Task 2 - Pins Status

//Get Data from Switch_State Table

void fetchData() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(url);
int httpCode = http.GET();

if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println("Received payload:");
Serial.println(payload);

// Parse JSON
DynamicJsonDocument doc(1024);
deserializeJson(doc, payload);

for (JsonObject elem : doc.as()) {
int gpio = elem["gpio"];
int state = elem["state"];

// Find the pin and set its state
for (int i = 0; i < numPins; i++) {
if (gpio == gpioPins) {
pinMode(gpioPins, OUTPUT);
digitalWrite(gpioPins, state);
Serial.printf("Set GPIO %d to state %d\n", gpioPins, state);
break;
}
}
}
} else {
Serial.printf("Failed to fetch data, HTTP code: %d\n", httpCode);
}

http.end();
} else {
Serial.println("WiFi not connected");
}
}

// Check Pin State

void Sstate(void * pvParameters) {
for (;;) {

TickType_t xLastWakeTime;
const TickType_t xFrequency = 30000; // TESTING check every 30 sec (/ portTICK_PERIOD_MS ?)
//Initialise the xLastWakeTime variable with the current time.
xLastWakeTime = xTaskGetTickCount ();
for ( ;; )
{
//Wait for the next cycle.
vTaskDelayUntil( &xLastWakeTime, xFrequency );

Serial.print("Pin check running on core ");
Serial.println(xPortGetCoreID());
Serial.println ();

fetchData () ;
}

}
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... y-response
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»