У меня есть этот небольшой тестовый скрипт:
session_start(); session_write_close(); error_reporting(-1); register_shutdown_function(function() { //echo 'shutdown'; }); $MAX = 120; set_time_limit($MAX); echo date('Ymd H:i:s').'<br>'; $m = microtime(true); $file_db = new PDO('sqlite:'.dirname(__FILE__).'/test.sqlite3'); $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $file_db->exec("CREATE TABLE IF NOT EXISTS messages (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, message TEXT, time INTEGER)"); $d = date('U'); do { $file_db->exec ('INSERT INTO messages VALUES (null, "titleee'.rand(1,9).'", "MESSAGEEEE'.rand(1,99).'", "'.rand(1,999).'")'); if (date('U') - $d > $MAX/2) { break; } } while (true); $file_db = null; echo 'ok: '.(microtime(true)-$m);
если это запущено в браузере в нескольких экземплярах, рано или поздно он удаляет «исключение SQLSTATE [HY000]: общая ошибка: 5 база данных заблокирована». Как уклониться от этого?