download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Защо текстовият файл всеки път се презаписва с PHP ?

Автор
Съобщение
programings
Вто, 22.05.12, 08:08
Здравейте!

Имам няколко скрипта в които след определено действие се записват данни в лога!

Правя това със следният код, набутан във всички скриптове, пишещи в лога :
//Записваме някой данни в лога на сайта!
$ip = $_SERVER['REMOTE_ADDR'];
 
$string = "Файл $user е изтрит от $ip !";
 
$file = fopen("log.txt", 'w');
 
$space = "n";
 
fwrite($file, $string.$space);
fclose($file);

Работата е там, че всеки път, когато даден скрипт пише в лога, то той не пише данните на нова линия, а направо презаписва текстовият файл, и в него остава само първата линия с последно написаната информация от последният скрипт, който е писал в лога!

Какво ли не опитвах, пробвах с \r и с \n в различни структурни комбинации, но нищо, пак така го презаписва!

Защо?

Послепис : На осми ред от сорса по-горе пред n има наклонена черта, както трябва да бъде, просто форума не я показва!

редактиран от programings на 22.05.12 08:09
редактиран от programings на 22.05.12 08:11
insecteater
Вто, 22.05.12, 09:23
Замени реда
$file = fopen("log.txt", 'w');

с
$file = fopen("log.txt", 'а');

Разликата е в "а"-то, което означава режима на отваряне на файла. "w" е за запис, но указателя отива в началото на файла и презаписва, а "а" е за добавяне и указателя се позиционира в края на файла като по този начине не се припокриват досегашните данни.

Не знам дали не е хубаво да се заключи файла с flock например, ако има вероятност два скрипта да пишат по едно и също време върху един и същ файл.

programings
Вто, 22.05.12, 10:21
Мерси, Ганчо! Получи се!

Друг път ще внимавам с тия права, не ги смятах за толкова важни до сега!

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.