|
|
|
|
|
для: SSgv
(03.03.2006 в 01:18)
| | >8мб текста это круто..)))
Да я тоже потешался, пока в последнее время не пошла буквально эпидемия 10Мб XML-файлов, которые нужно разбирать и помещать в базу данных - когда скриту отводится только 8 Мб - веселуха полная... | |
|
|
|
|
|
|
|
для: SSgv
(03.03.2006 в 01:18)
| | потому что файл - структура данных, оптимизированная по критерию скорости последовательного доступа в прямом направлении. И используется она в этом качестве в подавляющем большинстве случаев.
Круто не 8 мб текста. "Круто", когда скрипт, которому по своей алгоритмической природе достаточно 80-800кб, захватывает под себя 8 мб. Потому что так написан. А еще "круто", когда у хостера таких скриптов выполняется одной машиной на полусотне виртуальных серверов одновременно. А пользователи потом воют, что хостинг тормозит зело круто. | |
|
|
|
|
|
|
|
для: midav
(02.03.2006 в 22:46)
| | Думал, думал, так я и не понял. .))) Почему нету режима записи в начало файла, а режим записи в конец a+ например есть? Это странно. …)))
8мб текста это круто..))) | |
|
|
|
|
|
|
|
для: cheops
(02.03.2006 в 22:40)
| | Ну так по вашим словам скрипты на файлах вообще не стоит делать :)))) | |
|
|
|
|
|
|
|
для: midav
(02.03.2006 в 22:36)
| | Под скрипт отводится строго определённое количество памяти, обычно 8 Мб, реже 16 - если файл мегабайт 10, а скрипт пытается поместить его содержимое в свою переменную, то он аварийно завершается из-за нехватки памяти. | |
|
|
|
|
|
|
|
для: midav
(02.03.2006 в 22:36)
| | В очень простом смысле.
Под PHP-процесс распределяется память. Оперативная (или виртуальная, не столь важно) память сервера. Файл может оказаться на порядок длинее, чем то количество памяти, которое php-процессу дадут съесть. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2006 в 22:31)
| | В смысле в память влезает? | |
|
|
|
|
|
|
|
для: midav
(02.03.2006 в 22:23)
| | >Ну нифига не работает мой вариант,
Я такого не утверждал.
>ты хоть его проверял?
Нет, не проверял. Я на слово верю.
....
>И всё хорошо работает :)
Всё хорошо работает, пока файл в память влезает. А потом? | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2006 в 10:38)
| | Ну нифига не работает мой вариант, ты хоть его проверял? Я вот только что протестил, запись идет в начало файла :)
<?php
if($act=='add') {
$a=0;
$text = "$pole1|$pole2";
$file=file("test.txt");
$fp=fopen("test.txt", "a+");
flock ($fp, LOCK_EX);
ftruncate ($fp,0);//УДАЛЯЕМ СОДЕРЖИМОЕ ФАЙЛА
for ($i=0;$i< sizeof($file);$i++)
{ if ($a==$i) {fputs($fp,"\r\n$text\r\n");} else {fputs($fp,$file[$i]);} }
fflush ($fp);//очищение файлового буфера
flock ($fp,LOCK_UN);
fclose($fp);
}
else {
print"<form action='zapisj_vna4alo.php?act=add' method=post>
<input type=text name=pole1><br>
<input type=text name=pole2><br>
<input type=submit value='dobavitj'></form>";
}
?>
|
Просто сначала в файл test.txt надо самому заполнить вторую и третью строчку
(первая строка свободна)
kruto|kruto
yo|yo
poka|poka
|
И всё хорошо работает :) | |
|
|
|
|
|
|
|
для: SSgv
(02.03.2006 в 02:35)
| | Писать почти наверняка придется всё же в конец файла. Просто в слиу того факта, что именно в конце файла распределяется файловое пространство. А вот читать его, ежели приспичит (например, если файл настолько большой, что в память его класть целиком неудобно/невозможно), можно и в обратном направлении. Хотя и с несколько меньшей эффективностью. | |
|
|
|
|