busyTimeout(60000);//60 seconds $db->query('PRAGMA journal_mode = WAL;'); //multiple readers, https://sqlite.org/wal.html $db->query('PRAGMA busy_timeout = 60000;');//PRAGMA busy_timeout = milliseconds before retry; $db->query('PRAGMA cell_size_check = ON;'); //database corruption is detected earlier $db->query("PRAGMA encoding = 'UTF-8';"); //watch php WHERE clause will not work since ISO encoding vs UTF 8, $db->query("PRAGMA foreign_keys = ON;"); //off by default , each connection must call this return $db; } function init_db() { $db = &get_db(SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE); $db->exec(' DROP table IF EXISTS quran;'); //id,sura,aya,translation,footnotes trigram partial matches $db->exec(' CREATE VIRTUAL TABLE quran USING fts5 (translation ,tokenize=\'trigram\');'); $array_csv = array(); if (($handle = fopen("english_hilali_khan_v1.1.0-csv.1.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $array_csv[] = $data; } fclose($handle); } //echo print_r($array_csv); $db->exec('BEGIN TRANSACTION;'); //MUCH FASTER foreach($array_csv as $row) { $prepare_sql = $db->prepare( 'INSERT INTO quran VALUES(:translation) '); $prepare_sql->bindValue(':translation', $row[3], SQLITE3_TEXT); $prepare_sql->execute(); $prepare_sql->reset(); } $db->exec('END TRANSACTION;'); $db->close(); // $db->close(); echo "hone"; } ?>