add busyTimeout() to deal with concurrency. open read-write only when needed

This commit is contained in:
frederik
2024-03-04 14:03:54 +01:00
parent 90d53a3a43
commit b0eb5e063f
7 changed files with 60 additions and 175 deletions
+10 -29
View File
@@ -6,12 +6,10 @@ $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
error_reporting(E_ERROR);
ini_set('display_errors',1);
require_once 'scripts/common.php';
$db = new SQLite3('./scripts/birds.db', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
if($db == False){
echo "Database is busy";
header("refresh: 0;");
}
$db = new SQLite3('./scripts/birds.db', SQLITE3_OPEN_READONLY);
$db->busyTimeout(1000);
if (file_exists('./scripts/thisrun.txt')) {
$config = parse_ini_file('./scripts/thisrun.txt');
@@ -163,10 +161,7 @@ if (!isset($_SERVER['PHP_AUTH_USER'])) {
if(isset($_GET['bydate'])){
$statement = $db->prepare('SELECT DISTINCT(Date) FROM detections GROUP BY Date ORDER BY Date DESC');
if($statement == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement);
$result = $statement->execute();
$view = "bydate";
@@ -180,10 +175,7 @@ if(isset($_GET['bydate'])){
} else {
$statement = $db->prepare("SELECT DISTINCT(Com_Name) FROM detections WHERE Date == \"$date\" ORDER BY Com_Name");
}
if($statement == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement);
$result = $statement->execute();
$view = "date";
@@ -195,10 +187,7 @@ if(isset($_GET['bydate'])){
$statement = $db->prepare('SELECT DISTINCT(Com_Name) FROM detections ORDER BY Com_Name ASC');
}
session_start();
if($statement == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement);
$result = $statement->execute();
$view = "byspecies";
@@ -208,11 +197,9 @@ if(isset($_GET['bydate'])){
session_start();
$_SESSION['species'] = $species;
$statement = $db->prepare("SELECT * FROM detections WHERE Com_Name == \"$species\" ORDER BY Com_Name");
ensure_db_ok($statement);
$statement3 = $db->prepare("SELECT Date, Time, Sci_Name, MAX(Confidence), File_Name FROM detections WHERE Com_Name == \"$species\" ORDER BY Com_Name");
if($statement == False || $statement3 == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement3);
$result = $statement->execute();
$result3 = $statement3->execute();
$view = "species";
@@ -484,10 +471,7 @@ if(isset($_SESSION['date'])) {
$statement2 = $db->prepare("SELECT * FROM detections where Com_Name == \"$name\" ORDER BY Date DESC, Time DESC");
}
}
if($statement2 == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement2);
$result2 = $statement2->execute();
$num_rows = 0;
while ($result2->fetchArray(SQLITE3_ASSOC)) {
@@ -574,10 +558,7 @@ echo "<table>
if(isset($_GET['filename'])){
$name = $_GET['filename'];
$statement2 = $db->prepare("SELECT * FROM detections where File_name == \"$name\" ORDER BY Date DESC, Time DESC");
if($statement2 == False){
echo "Database is busy";
header("refresh: 0;");
}
ensure_db_ok($statement2);
$result2 = $statement2->execute();
echo "<table>
<tr>