SQLite/PHP, только для чтения?

Если вы уверены, что в вашей программе нет утечек памяти , попробуйте:

  1. Увеличьте размер кучи, например -Xmx1g.
  2. Включить параллельный сборщик низких пауз -XX:+UseConcMarkSweepGC.
  3. Повторно использовать существующие объекты, когда это возможно, чтобы сохранить некоторую память.

Если необходимо, ограничение limit можно отключить, добавив опцию -XX:-UseGCOverheadLimit в командной строке.

9
задан Community 23 May 2017 в 11:46
поделиться

4 ответа

Kyle, для PDO/Sqlite для работы Вы должны записать разрешение в каталог, где Ваша база данных находится.

Кроме того, я вижу, что Вы выполняете несколько выборов в цикле. Это может быть в порядке при создании чего-то маленького и не тяжелые загруженный. Иначе я предложил бы создать единый запрос, который возвращает несколько строк, и обработайте их в отдельном цикле.

11
ответ дан 4 December 2019 в 13:51
поделиться

Я думаю, что PHP обычно работает как пользователь "nodody". Не уверенный в на Mac все же. Если Mac имеет whoami, Вы могли бы попробовать echo exec('whoami'); узнать.

1
ответ дан 4 December 2019 в 13:51
поделиться

@Tom Зависит от того, как настроен хостинг. Если сервер запускает PHP как модуль Apache, то вполне вероятно, что это «никто» (обычно любой пользовательский apache настроен как). Но если PHP настроен как cgi (например, fast-cgi) и на сервере запущен SuExec, то php запускается от имени того же пользователя, которому принадлежат файлы.

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

@Michal Кроме того, можно использовать beginTransaction (); выполните все необходимые действия, затем comit (); чтобы на самом деле их комитировать.

0
ответ дан 4 December 2019 в 13:51
поделиться

Ну, у меня была такая же проблема и я решил ее по ошибке: просто поместите каждый вставляющий кусок инструкции SQL внутрь блока try...catch, который он проходит. Это заставляет вас делать все правильно, иначе ничего не получится. Ну, теперь все работает. Удачи всем, у кого еще есть такая проблема (поскольку я сам использовал эту тему, чтобы попытаться решить свою проблему).

0
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: