PHP PDO Чтение SQLLite DB из памяти (переменная) - PullRequest
0 голосов
/ 26 января 2019

Приветствую всех,

1-й, всем своим уважаемым избирателям, я достаточно много искал (насколько смог), но не нашел ничего относящегося ко мне, поэтому я и пришел сюда ...

ок .. вот сценарий

клиентское приложение, подготовьте данные, создайте sqllite db, сожмите их (zip), закодируйте zip-файл и отправьте на сервер.

сейчасв конце сервера я декодирую zip-файл, затем распаковываю его, сохраняю данные sqllite db в переменную типа $ strLiteData.

теперь мне нужно использовать эту переменную / данные с использованием PDO, но, похоже,, PDO поддерживает только реальный файл или «память».

, поэтому единственная опция, которую я должен сохранить - сначала сохранить данные sqllite db в файл, а затем загрузить этот файл.и чтобы сохранить уникальность, мне нужно создать уникальную папку, файлы и т. д.

нет ли способа прочитать непосредственно из переменной с помощью PDO?

я надеюсь, что есть:)

спасибо, я заранее

с наилучшими пожеланиями

1 Ответ

0 голосов
/ 26 января 2019

На большинстве машин временные файлы создаются в памяти, поэтому мы можем по сути копировать базу данных из одного места в памяти в другое, что в любом случае будет делать загрузка базы данных непосредственно из переменной.

и для сохранения уникальности мне нужно создать для этого уникальную папку, файлы и т. Д.

Позвольте PHP обрабатывать уникальность с помощью tmpfile().Хотя этот файл обычно виден всем пользователям (в Linux, по умолчанию он расположен в /tmp), значение доступно только текущему пользователю, а имя файла всегда нечеткое, как php8c1vRQ.

Вот пример, который сохраняет результат обратно в $ strLiteData, когда вы закончите выполнять запросы:

$strLiteData = /* from your zip file */

$dbFile = tmpfile();
$dbPath = stream_get_meta_data($dbFile)['uri'];

fwrite($dbFile, $strLiteData);

$pdo = new PDO('sqlite:' . $dbPath);

/*
 * do your PDO stuff here
 */

$strLiteData = file_get_contents($dbPath);

PHP автоматически удалит временный файл, когда скрипт завершится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...