Я пишу приложение для Android, которое взаимодействует с бэкэндом PHP. Внутренняя база данных - SQLite 3. Проблема в том, что я периодически получаю эту ошибку PHP Warning: SQLite3::prepare(): Unable to prepare statement: 5, database is locked
. Я открываю соединение с базой данных в каждом файле PHP и закрываю его, когда скрипт завершается. Я думаю, проблема в том, что один скрипт заблокировал файл базы данных во время записи в него, а второй пытался получить к нему доступ, что не удалось. Один из способов избежать этого - разделить соединение между всеми скриптами php. Мне было интересно, есть ли другой способ избежать этого?
Edit:
Это первый файл:
<?php
$first = SQLite3::escapeString($_GET['first']);
$last = SQLite3::escapeString($_GET['last']);
$user = SQLite3::escapeString($_GET['user']);
$db = new SQLite3("database.db");
$insert = $db->prepare('INSERT INTO users VALUES(NULL,:user,:first,:last, 0 ,datetime())');
$insert->bindParam(':user', $user, SQLITE3_TEXT);
$insert->bindParam(':first', $first, SQLITE3_TEXT);
$insert->bindParam(':last', $last, SQLITE3_TEXT);
$insert->execute();
?>
Вот второй файл:
<?php
$user = SQLite3::escapeString($_GET['user']);
$db = new SQLite3("database.db");
$checkquery = $db->prepare('SELECT allowed FROM users WHERE username=:user');
$checkquery->bindParam(':user', $user, SQLITE3_TEXT);
$results = $checkquery->execute();
$row = $results->fetchArray(SQLITE3_ASSOC);
print(json_encode($row['allowed']));
?>