|
|
|
| Здравствуйте!Много раз встречал что в сети говорили о проблеме с flock (ну что оно неработает в многих файловых системах)
flock() не будет работать на NFS и многих других сетевых файловых системах. Обратитесь к документации вашей операционной системы для получения дополнительной информации.
В некоторых операционных системах flock() реализован на уровне процессов. При использовании многопоточных серверных API, таких как ISAPI, вы не можете полагаться на flock() для защиты ваших файлов от дугих PHP-скриптов, которые работают в параллельном потоке на том же сервере!
flock() не поддерживается на старых файловых системах вроде FAT и его производных, так что всегда будет возвращать FALSE в этом окружении (это особенно касается пользователей Windows 98).
И многие говорят что их баззы на текстовых файлах стираются.
У многих есть "готовые решения" например:
function S_fw ($COUNT_FILE, $text)
{
$z=rand (0,100000);
$fp = @fopen($COUNT_FILE.".".$z, "wb+");
@fwrite($fp,$text);
@fclose($fp);
if (@rename ($COUNT_FILE.".".$z, $COUNT_FILE)==false)
{
@unlink ($COUNT_FILE);
@rename ($COUNT_FILE.".".$z, $COUNT_FILE);
}
}
|
или
function WriteToFile ($path_to_file,$data) {
$lock = fopen(PATH_BLOCKFILE,"a");
if(flock($lock, LOCK_EX)) {
$tmp=fopen(PATH_TEMPFILE,"w");
for($i=0;$i<count($data);$i++) {
fputs($tmp, "$data[$i]\n");
}
fclose($tmp);
unlink("$path_to_file");
rename(PATH_TEMPFILE, "$path_to_file");
flock($lock, LOCK_UN);
fclose($lock);
}
}
|
Последный показался более понятным, но я никак немогу записать данные построчно в файл баззу(каждый раз продолжать записи).Помогите пожалуйста осуществить это.(По моему проблема в том что каждый раз когда открываем PATH_TEMPFILE то очищаем ее а после rename в баззу записивается то что находиться в PATH_TEMPFILE... )
Вместо этого:
$fp = fopen("data.txt", "a");
fwrite($fp,"$text\r\n");
fclose ($fp);
хочу использовать более безопасный метод.
Как Вы боретесь с этим??? | |
|
|
|
|
|
|
|
для: pnduk
(06.12.2010 в 22:03)
| | дата это массив может поэтому не можешь? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(06.12.2010 в 22:40)
| | Думаю нет!Могу и просто текст записать.А вы нестолкнулись с такой проблемой?Или вы с sql работайте. | |
|
|
|
|
|
|
|
для: makigo
(07.12.2010 в 11:20)
| | нет не сталкивался на линуксах и прочих униксах все прекрасно работает | |
|
|
|
|
|
|
|
для: softtime.ru
(07.12.2010 в 11:22)
| | Очень много слышал про такое.Думаю простой скрипт комментариев сделать но как то не решаюсь. | |
|
|
|
|
|
|
|
для: makigo
(07.12.2010 в 13:22)
| | а ты не думай делай, всё работает как надо | |
|
|
|
|
|
|
|
для: softtime.ru
(07.12.2010 в 14:39)
| | Thanks a lot! | |
|
|
|