Для записи в файл 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);
от чего она очищает и куда выводит,
если идёт запись ???
я думал что в функцию такую строку писать нельзя
KaFe
а это что такое fflush($open);
от чего она очищает и куда выводит,
если идёт запись ???
Спустя 12 минут, 27 секунд (24.06.2010 - 01:39) FatCat написал(а):
Цитата (KaFe @ 24.06.2010 - 00:19) |
flock ($open,LOCK_UN); |
Разве fclose не разлочивает сам собой?
Спустя 35 минут, 44 секунды (24.06.2010 - 02:15) KaFe написал(а):
FatCat перестраховка
Спустя 3 часа, 7 минут, 4 секунды (24.06.2010 - 05:22) Guest написал(а):
Цитата (KaFe @ 23.06.2010 - 20:19) |
$open=fopen($csv,"a"); вот это всех корректнее |
Это оверхед.
зачем дёргаться и вызывать 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() ? |
Вот этого не понял??