Я установил 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 (правильная практика). Но даже с фиксированными значениями я борюсь.
Я подозреваю, что это что-то простое и глупое, что я все испортил, но я проклят, если увижу это.