Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.141.202] |
|
Сообщ.
#1
,
|
|
|
Уважаемые форумчане! Требуется ваша помощь!
Подскажите, как правильно? Задача простая, нужно записать визит пользователя в базу данных. Вопрос 1: Беспокоит то, что каждый раз при обновлении (update) куча холостых операций (create, insert), может это как то иначе решается, подскажите. Вопрос 2: А как вы решаете задачи которые требуются однократно при первом запуске? Вопрос 3: Подключение к базе данных. Может в другой файл переместить? Но тогда при перемещении файла будут проблемы, а если оставить - то постоянно открывается и закрывается подключение к базе данных в разных файлах. $db = new PDO('sqlite:file.sqlite'); $db -> exec("CREATE TABLE IF NOT EXISTS 'tableName' ( id PRIMARY KEY AUTOINCREMENT, user TEXT UNIQUE NOT NULL, visitCounter INTEGER DEFAULT '0' )"); $db -> exec("INSERT OR IGNORE INTO 'tableName' (user) VALUES ('user1')"); $db -> exec("UPDATE 'tableName' SET visitCounter = visitCounter + 1 WHERE user = 'user1'"); unset($db); |
Сообщ.
#2
,
|
|
|
Таблицу надо создавать при установке или апгрейте сайта.
Update/insert проблема может быть решена по крайней мере двумя способами: 1. Проверяй пользователя при создании сессии. Храни результат в переменной сесии, кукисах . 2. Некоторые движки баз данных позволяют делать insert/update одной орерацией. Какую БД ты используешь ? |
Сообщ.
#3
,
|
|
|
Цитата MIF @ Таблицу надо создавать при установке или апгрейте сайта. Да, тоже не понятно зачем каждый раз дергать БД? Второе -- если пользователь существует, зачем дергать БД каждый раз? Можно использовать https://ru.wikipedia.org/wiki/Memcached и делать инсерт только если юзера не существует. |