Всем привет. Я новичок в php и SQLITE ... На небольшом сайтике с небольшой посещаемостью в папке, где находится база данных db.sq периодически возникает (закономерности не выявлено) файл db.sq-journal... и сайт становится недоступен... :-( В инете прочитал, что db.sq-journal это типа файла отката... но почему то он потом не пропадает... Исследуя внутренности файлика db.sq-journal обнаружил в нем типа robot_google и т.д. – это видимо записи от работы скрипта моего счетчика, который записывает в базу «кто пришел, по каким страничкам прошелся, с каким IP и т.д.». Других записей в файле db.sq-journal никогда не обнаруживается…(только от роботов) Из чего я сделал вывод, что файл db.sq-journal образовывается видимо при нападении на сайтик роботов-поисковиков, которые с большой скоростью проходятся по страничкам… и видимо не успевает писаться в базу… или что-то в таком роде…. Так вот сам вопрос: На что обратить внимание в скрипте счетчика, что изменить, что переделать, чтобы исключить появление файла db.sq-journal…. С удовольствием отвечу на дополнительные вопросы… которые помогут прояснению ситуации… и исправлению данного скриптика… Прошу обратить, что я новичок в php и SQLITE…. Спасибо.
*-journal файл созадется при записи в базу, одновременно, база лочится на время записи. Оптимизируйте операции INSERT/UPDATE: - проверьте, обернуты ли эти операции в транзакцию. Без транзакции операции модификации в SQLite выполняются страшно медленно. - удалите неиспользуемые ключи на таблицах - уменьшите колличество операций
Наверняка у меня все не оптимизировано... Будем думать... А почему файл *-journal создается при любых записях в базу данных, а потом пропадает.... а в каких случаях он появился и не пропал.... ??? Можно ли например искуственно вызвать такую ситуацию... типа... ага... вот 10 операций INSERT/UPDATE при которых *-journal появляется и пропадает.... а вот при 100 неоптимизированых INSERT/UPDATE файл *-journal уже появился и не пропал... Да и вообще он появляется у меня и НЕ ПРОПАДАЕТ именно из-за неоптимизированных INSERT/UPDATE или нет..??? Вдруг он появляется в те дни, когда например на хосте проводят архивацию сайтов... или при 1 секундном отключении питания....или по каким либо другим причинам... ??? Хотя понимаю, что оптимизация моих INSERT/UPDATE в любом случае не помешает.... . Спасибо.
Поисковик шустрит сразу несколько урлов, все это выстариватся в огромную очередь на запись, банально не справляясь с нагрузкой. Выпольнить паралельно много запросов. Попробуйте для начала добавить транзакции. Достаточно выполнить BEGIN до запроса и COMMIT после. Если рядом несколько INSERT/UPDATE разумно их вложить в одну транзакцию. http://freesource.info/wiki/SQLite/NovyeTranzakcii
Всем привет. И Ti привет Чуть изменил данные которые пишится в счетчик и сделал везде вот так: sqlite_query($DB, " BEGIN; INSERT INTO count_ua (ua_1) VALUES ('$useragent'); COMMIT; "); вместо sqlite_query($DB, "INSERT INTO count_ua (ua_1) VALUES ('$useragent');"); Это верно я сделал? Вроде пока –journal не появляется… Уж не знаю в связи с предпринятыми мерами… или нет…
RVV угу, нормуль. Возможно, стоит обратить внимание на PDO, в нем SQLite3, а при использовании sqlite_* - SQLite2