{% else-1 %}
Обновить | Подписаться | Поднять тему
Чтобы выполнить действие авторизируйтесь или пройдите регистрацию на сайте.
1.
ibni * 0.01
[автор] (29 июл 2016, 09:03) [0/0] [0] [отв] [спам] [под] +1 | -1

Помогите плиз.
Можно ли сделать так чтоб ip записалась в file.log (в лог) и сохранилась потом в БД. Если удалить запись из БД хочу чтоб удалилась из файла лога. Как написать такое код?

2.
Halking * 4.32
(29 июл 2016, 09:39) [0/0] [0] [отв] [спам] [под] +1 | -1

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

3.
ibni * 0.01
[автор] (29 июл 2016, 13:34) [0/0] [0] [отв] [спам] [под] +1 | -1

ip записывается на лог и бд, а вот удалить придется вручную, я хочу что автоматически удалился из лог, когда я удаляю из БД

4.
WaQum * 1.1
(29 июл 2016, 13:45) [0/0] [0] [отв] [спам] [под] +1 | -1

А в чем проблема главная? Вроде все просто

5.
Netc * 0.13
(29 июл 2016, 14:34) [1/0] [1] [отв] [спам] [под] +1 | -1

ibni, можно так сделать
[code]<?php
# забираем ip
$ip = $_SERVER['REMOTE_ADDR'];

# ЗАПИСЬ
# проверяем на существование в БД данного ip
if(mysql_num_rows(mysql_query("SELECT * FROM `ip_table` WHERE `ip` = '{$ip}';"*) == 0){

# пишем в БД
mysql_query("INSERT INTO `ip_table` SET `ip` = '{$ip}';"*;

# записываем ip в log - список
$fopen = fopen('./file.log', 'a+');
fwrite($fopen, $ip . "\n"*;
fclose($fopen);
}

# УДАЛЕНИЕ
# проверяем на существование данного ip в БД
if(mysql_num_rows(mysql_query("SELECT * FROM `ip_table` WHERE `ip` = '{$ip}';"*)){

# удаляем с БД
mysql_query("DELETE FROM `ip_table` WHERE `ip` = '{$ip}';"*;

# выводим список существующих ip из БД
$res = mysql_query("SELECT * FROM `ip_table` WHERE `ip`;"*;

$out = false;

while($row = mysql_fetch_assoc($res)){

$out .= $row['ip'] . "\n";
}

# переписываем log - список
$fopen = fopen('./file.log', 'w+');
fwrite($fopen, trim($out));
fclose($fopen);
}
?>[/code]

6.
bibilink * 19.01
(30 июл 2016, 00:53) [0/0] [0] [отв] [спам] [под] +1 | -1

Выше fopen, fwrite, fclose можно заменить одним file_put_contents()
Чтобы найти элемент в файлике и удалить его (параллельно с удалением с бд) можно просто получить содержимое файла через file_get_contents() и через str_replace() просто заменить его на NULL - пустую строку или PHP_EOL - перенос.
В зависимости а каком формате там все это храниться.
Можно использовать и JSON.

7.
Netc * 0.13
(30 июл 2016, 01:30) [0/0] [0] [отв] [спам] [под] +1 | -1

Можно и так сделать, только зачем лишний раз открывать файл? Когда можно просто с базы взять готовый список и сразу записать при помощи fopen..., так намного производительнее.


Изм. 1 раз. / Посл. изм.
Netc * 0.13
(30 июл 2016, 01:52)
8.
bibilink * 19.01
(30 июл 2016, 02:41) [0/0] [0] [отв] [спам] [под] +1 | -1

Не производительней.
В моем случае не вытаскивается информация по всем записям с бд. Кроме того, там еще и хранение ее в переменной для перезаписи.
Ну и использование устаревшего mysql_ драйвера.

9.
Netc * 0.13
(30 июл 2016, 02:45) [0/0] [0] [отв] [спам] [под] +1 | -1

Ещё как производительнее. А если в файле 2000-3000 строк? М? Это уже процесс! А для бд это миг!

10.
bibilink * 19.01
(30 июл 2016, 02:50) [0/0] [0] [отв] [спам] [под] +1 | -1

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

Чтобы писать сообщения авторизируйтесь или пройдите регистрацию на сайте.
Подписаны: 1
Скачать тему | Файлы темы | Фильтр сообщений