| |
|
|
| | Я гдето слышал что если читать огромный файл функции file то это займёт много время и буудут проблемы.
Так какже его прочесть? | |
| |
|
|
| |
|
|
| |
для: Fddd
(25.10.2006 в 18:21)
| | | а зачем его читать? Что Вы дальше хотите делать с его содержимым? | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.10.2006 в 18:55)
| | | >а зачем его читать?
Как это.... А зачем он тогда нужен?
Я храню там информацию, которая записана по строкам. Мне её нужно будет вывести на экран, коечто обработать. | |
| |
|
|
| |
|
|
| |
для: Fddd
(25.10.2006 в 19:04)
| | | так и читайте по строкам. fopen, fgets | |
| |
|
|
| |
|
|
| |
для: Trianon
(25.10.2006 в 19:15)
| | | Блин интересно, чё это за "Огромный" файл, ты чё.. Лучше юзать Mysql чем хранить всё в txt :-)))) | |
| |
|
|
| |
|
|
| |
для: Alph[p]a
(25.10.2006 в 19:23)
| | | >Блин интересно, чё это за "Огромный" файл, ты чё.. Лучше юзать Mysql чем хранить всё в txt :-))))
Это всё понятно... Я не спорю.
Вот так чтоль открывать:
<?php
$file = fopen("file.txt", "r");
while (!feof($file)) {
$text = fgets($file, 1000);
echo $text;
}
fclose($file);
?>
|
И чё так будет быстрее работать? А параметр у fgets "1000" на скорость влияет? | |
| |
|
|
| |
|
|
| |
для: Fddd
(25.10.2006 в 19:30)
| | | >$text = fgets($file, 1000);
руководство по php:
string fgets (int fp, int length)
там сказано что параметр "int length" это длина возвращаемой строки, мол если в строке встречается символ "\n" то возвращаються все элементы до этого знака..
А так всё правильно. На скорость само собой будет влиять, смотря какой длины строка... | |
| |
|
|
| |
|
|
| |
для: Fddd
(25.10.2006 в 19:30)
| | | А что имено вы хранте в файлах? Какую имено информацию? | |
| |
|
|
| |
|
|
| |
для: DEM
(25.10.2006 в 19:42)
| | | >А что имено вы хранте в файлах? Какую имено информацию?
А это имеет разницу при работе скрипта?
Вот интересно... У меня получилось так что через file получается быстрее чем через fopen.
Для примера возьмёт Деневер и файл весом в 995 КБ.
Пишем в файле file.php:
<?php
list($msec,$sec)=explode(chr(32),microtime());
$HeadTime=$sec+$msec;
/* Сам код */
$file = file("files.txt");
foreach ($file as $a){
echo $a."<br>";
}
/* - - */
list($msec,$sec)=explode(chr(32),microtime());
echo "<br>Страница сгенерировалась за ".round(($sec+$msec)-$HeadTime,4)." сек.";
?>
|
А в файле fopen.php пишем:
<?php
list($msec,$sec)=explode(chr(32),microtime());
$HeadTime=$sec+$msec;
/* Сам код */
$file = fopen("files.txt", "r");
while (!feof($file)) {
$text = fgets($file, 100);
echo $text."<br>";
}
/* - - */
list($msec,$sec)=explode(chr(32),microtime());
echo "<br>Страница сгенерировалась за ".round(($sec+$msec)-$HeadTime,4)." сек.";
?>
|
Для того чтобы создать проверочный текстовый файл(files.txt) пишем скрипт:
<?php
$f = fopen("files.txt", "a+");
$tex="";
for ($i=0; $i<=10000; $i++){
$tex.=$i." Строка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка\r\n";
}
fwrite ($f, $tex);
?>
|
| |
| |
|
|
| |
|
|
| |
для: Fddd
(26.10.2006 в 22:48)
| | | .. | |
| |
|
|
| |
|
|
| |
для: Fddd
(27.10.2006 в 16:00)
| | | .. | |
| |
|
|
| |
|
|
| |
для: Fddd
(27.10.2006 в 22:56)
| | | " .. " - означает "вопрос все еще актуален", up?
я думал это ляп затертый....
Дело наверное в том, что длина строк уже после 10-ков, будет больше ста байт, соответственно приходится одну строку считывать в несколько заходов. Увеличив значение второго аргумента fgets хотя бы на несколько байт время работы сократится существенно (хотя будет не меньше чем file() ).
Но использовать лучше fgets, потому что если файл окажется большего размера, то он банально может не уместиться в предаставленной хостером оперативной памяти. | |
| |
|
|
| |
|
|
| |
для: Fddd
(26.10.2006 в 22:48)
| | | for ($i=0; $i<=10000; $i++){
$tex.=$i." Строка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка Проверка\r\n";
}
Вообще-то есть специальная функция str_repeat()...:) | |
| |
|
|
| |
|
|
| |
для: Unkind™
(27.10.2006 в 23:23)
| | | Вот про оперативную память я забыыыл совсем...я пока оставил это.
Вот новая задачка:
Есть код:
$vivod=preg_replace("{{nik}}", $nik[$n+$i],$msg);
|
Как сделать, что заменять несколько значений за раз? *Я хочу сказать, чтоб ненадо было дублировать функцию для каждой замены. заменить все зараз)
И еще, вместо "{{nik}}" он должен ввыдавать "Вася", а выает "{Вася}". Почему? | |
| |
|
|
| |
|
|
| |
для: mrklon
(28.10.2006 в 01:03)
| | | В каком виде у вас данные в файлах записаны?
Да и тут наверное лугше будет воспользоваться ф-ей str_replace (строковые ф-и работают быстрее, а тут еще такая простая замена):
<?
$text = "text {{nik}} text {{nik}}";
echo preg_replace ("/{{nik}}/is", "VASYA", $text),'<br>';
echo str_replace ('{{nik}}', 'VASYA', $text);
?>
|
пс: в рег. выражениях preg_replace, выражение нужно брать в ограничители - 2 практически любых, одинаковых самвола по краям | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(28.10.2006 в 06:48)
| | | Извиняюсь за путаницу.
preg_replace использую для врисывания данных в шаблон сообщения (гостевуха).
и вот кучку типа:
$vivod=preg_replace("/{{nik}}/", $nik[$n+$i],$msg);
$vivod2=preg_replace("/{{mail}}/", $mail[$n+$i],$vivod);
$vivod3=preg_replace("/{{web}}/", $web[$n+$i],$vivod2);
$vivod4=preg_replace("/{{msg}}/", $mmm[$n+$i],$vivod3);
свести к одному preg_replace
------------
За "пс: в рег. выражениях preg_replace, выражение нужно брать в ограничители - 2 практически любых, одинаковых самвола по краям"
Спасибо! | |
| |
|
|