Estoy escribiendo una aplicación de Android que se comunica con un back-end PHP. El backend db es SQLite 3. El problema es que recibo este error intermitentemente PHP Warning: SQLite3::prepare(): Unable to prepare statement: 5, database is locked
. Estoy abriendo una conexión a la base de datos en cada archivo PHP y cerrándolo cuando termina el script. Creo que el problema es que una secuencia de comandos bloqueó el archivo de la base de datos mientras escribía y la segunda secuencia de comandos intentaba acceder a ella, que falló. Una forma de evitar esto sería compartir una conexión entre todos los scripts php. Me preguntaba si hay alguna otra forma de evitar esto.Base de datos bloqueada al intentar acceder desde el script PHP
Editar: Este es el primer archivo:
<?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();
?>
Aquí es el segundo archivo:
<?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']));
?>
Primero comparta el código –
Código agregado y más descripción –