[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись в файл txt
mihai
Господа программисты.

Для записи в файл txt
я формирую строку и записываю


$open=fopen($csv,"a");
fwrite($open,$strok);
fclose($open);


а тут увидел маленький скриптик
который в функции fputs() записывет
всё сразу с тегами с переменным с текстом
насколько это верно и корректно


$fp=fopen("visitors.txt", "a+");
fputs($fp, "<b>Дата:</b> $datetime <b>ip:</b> $ip <b>версия браузера:</b> $os <b>host:</b> $host <b>страница:</b> $page");
fclose($fp);




Спустя 24 минуты, 36 секунд (23.06.2010 - 23:08) twin написал(а):
Так это одно и тоже.

Спустя 11 минут, 39 секунд (23.06.2010 - 23:19) KaFe написал(а):
$open=fopen($csv,"a");
flock ($open,LOCK_EX);
fwrite($open,$strok);
fflush($open);
flock ($open,LOCK_UN);
fclose($open);


вот это всех корректнее

Спустя 2 часа, 6 минут, 53 секунды (24.06.2010 - 01:26) mihai написал(а):
twin
я думал что в функцию такую строку писать нельзя


KaFe
а это что такое fflush($open);
от чего она очищает и куда выводит,
если идёт запись ???

Спустя 12 минут, 27 секунд (24.06.2010 - 01:39) FatCat написал(а):
Цитата (KaFe @ 24.06.2010 - 00:19)
flock ($open,LOCK_UN);
fclose($open);

Разве fclose не разлочивает сам собой?

Спустя 35 минут, 44 секунды (24.06.2010 - 02:15) KaFe написал(а):
FatCat перестраховка laugh.gif

Спустя 3 часа, 7 минут, 4 секунды (24.06.2010 - 05:22) Guest написал(а):
Цитата (KaFe @ 23.06.2010 - 20:19)
$open=fopen($csv,"a");
flock ($open,LOCK_EX);
fwrite($open,$strok);
fflush($open);
flock ($open,LOCK_UN);
fclose($open);


вот это всех корректнее

Это оверхед.
зачем дёргаться и вызывать flock с LOCK_UN, если мы уже закрываем файл? Зачем два раза просить сделать fflush, если при закрытии файла оно и само один раз сделается?
А что будет, если между fopen и flock() кто-то решит открыть файл с флагом "w".. а пусть даже и "a" и что-то туда напишет ? Если никто этого сделать не сможет, то зачем flock() ?

Спустя 4 часа, 36 минут, 26 секунд (24.06.2010 - 09:58) twin написал(а):
KaFe
Цитата
вот это всех корректнее

Всех корректнее file_put_contents(). Правда для версии PHP >= 5
Для более низких версий безопасно (но от того крайне медленно) работает такая эмуляция:
if(!function_exists('file_put_contents'))  
{

function file_put_contents($filename, $content, $flag = null)
{

if(!file_exists($filename))
fclose(fopen($filename, "a+t"));

$f = fopen($filename, "r+t");

while(!flock($f, LOCK_EX + LOCK_NB))
sleep(1);

if($flag == FILE_APPEND)
{
fseek($f, 0, SEEK_END);
}
else
{
ftruncate($f, 0);
fseek($f, 0, SEEK_SET);
}

if(is_array($content))
$content = implode('', $content);

fwrite($f, $content );

return fclose($f);
}
}

Спустя 2 часа, 34 минуты, 49 секунд (24.06.2010 - 12:33) KaFe написал(а):
Цитата (Guest @ 24.06.2010 - 02:22)
Если никто этого сделать не сможет, то зачем flock() ?

Вот этого не понял??
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.