504 Тайм-аут шлюза при выполнении SQLite SELECT, а затем ОБНОВЛЕНИЕ в PHP - PullRequest
0 голосов
/ 24 июня 2018

Я установил Raspbian Stretch на Raspberry Pi, включая PHP 7 и SQLite 3.

У меня есть множество страниц, которые по-разному работают, чтобы по-разному выбирать значения базы данных SELECT, UPDATE, INSERT и DELETE. Однако я столкнулся с проблемой на одной конкретной странице PHP, когда я пошел, чтобы ВЫБРАТЬ некоторые данные из таблицы, а затем ОБНОВИТЬ их сразу после этого.

Чтобы продемонстрировать проблему, из командной строки я создал таблицу с именем testdb в базе данных с именем monitoring.

CREATE TABLE IF NOT EXISTS testdb ('name' TEXT NOT NULL, 'color' TEXT, 'schedule' INTEGER NOT NULL);

Затем я добавил строку с некоторыми случайными значениями;

INSERT INTO testdb (name, color, schedule) VALUES ("testing","green",2);

Мой пример PHP-кода, который приводит к тайм-ауту 504 шлюза, выглядит следующим образом

<?php

// select a row in testdb
$db = new PDO('sqlite:/srv/monitoring/monitoring');
$stmt = $db->prepare("SELECT color FROM testdb WHERE name='testing';");
$stmt->execute();
$result = $stmt->fetch();
$db = null;
echo $result['color'];


// Update testdb
$db = new PDO('sqlite:/srv/monitoring/monitoring');
$sql =  "UPDATE testdb SET color = 'green', schedule = 2 WHERE name = 'testing'";
$stmt = $db -> prepare($sql);
$stmt -> execute();
$db = null;

?>

Я могу запустить либо блок SELECT, либо блок UPDATE, и они будут работать (что я могу подтвердить, проверив таблицу из командной строки, и, следовательно, нет никаких разрешений или проблем с доступом к базе данных). Но если я пытаюсь загрузить страницу как обычную страницу, у меня появляется тайм-аут.

В рабочем коде у меня есть переменные, которые я использую динамически, отсюда и использование PDO (правильная практика). Но даже с фиксированными значениями я борюсь.

Я подозреваю, что это что-то простое и глупое, что я все испортил, но я проклят, если увижу это.

1 Ответ

0 голосов
/ 24 июня 2018

Ну, у меня нет ответа на проблему, но код теперь работает на следующий день. Я могу только предположить, что проблема была связана с чем-то, что происходило в то время. Я предполагаю, что он не был основан на браузере, потому что во время истечения времени ожидания другие страницы не могли получить доступ к базе данных. Raspberry Pi не был обновлен или перезагружен. Я в растерянности.

В одночасье я подумал, что просто объединю код в одну последовательность, которая будет выбирать, а затем обновлять, не рассматривая каждый блок как отдельную единицу, но, поскольку он работал, я сохранил исходную форму. Weird.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...