Внимание! В связи с устареванием топика эта страница была взята из кэша.
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 10/08/04 в 01:04
|
|
Читаю с файла в массив при помощи file(). Насколько критична ситуация когда одновременно будут два таких обращения к файлу.
|
K началу
|
|
|
Sterx +
Зарегистрирован: 08.12.02
Сообщения: 2657
|
Добавлено: 10/08/04 в 01:24
|
|
думаю что некритична, если файло не очень большое а при записи (одновременной) возможны траблы
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 10/08/04 в 01:29
|
|
2Sterx: Размер примерно 25 - 30 к/б. А запись мне и ненужна.
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 10/08/04 в 01:36
|
|
Кстати, могу сказать нафиг это надо. Бродя по сиджам часто можно видеть такие текстовые блоки:
Код: | Pretty fat girl posing Chubby amateur babe Huge fat busty babe Blonde licking huge tits Busty housewife shows fat body Big titty plumper with oranges Plumper posing in a pool table Chubby redhead babe |
и т.д. Так вот, задумал кто нить например делать сидж. Так не ручками же все это набивать. Идешь на сидж своей ниши и протаскиванием мыши выделяешь нужный столбец ссылок, копируешь, а потом вставляешь в файлик. Скрипт читает его и пишет всю таблицу сам (я там еще сделал разбиение на столбцы, просто указываешь кол-во столбцов и все).
|
K началу
|
|
|
Pentarh
Зарегистрирован: 05.04.03
Сообщения: 2390
|
Добавлено: 10/08/04 в 01:52
|
|
Я думаю, лучше лочить файл на чтение.
Код: | $fp=fopen("file.txt",'r'); if ($fp) { flock($fp,1); // Лок на чтение $contents=fread($fp,filesize('file.txt')); flock($fp,3); // Снимаем лок fclose($fp); } |
Всегда так делал - глюков не было.
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 10/08/04 в 02:02
|
|
2Pentarh: Да, я тоже всегда так делаю. Лок еще в do...while воткнуть мона для надежности, и анлок также. Только есть одна особенность. Когда собираешь таким способом дески каким описал я, они вставляются каждая на новой строке. И чтобы загнать все это в массив надо сделать так:
Код: | $array = explode('\n',$file_data); |
Однако ничего невыходит, символ новой строки там отсутствует. Можно конечно вставить его или другой какой маркер однако удобство пользования скриптом сильно страдает.
|
K началу
|
|
|
webboxxx
Зарегистрирован: 06.03.03
Сообщения: 405
|
Добавлено: 10/08/04 в 05:31
|
|
лок в цикл ни в коем случае нельзя ставить. он работает таким образом, что если у тебя скрипт пытается залочить файл, который уже залочен другим скриптом, то при попытке такого лока функция не возвращает управление скрипту до тех пор, пока файл не будет разлочен. кстати для чтения как показывает практика файлы лочить не обязательно (если файл статичный - ты его создал и всё, не трогаешь).
|
K началу
|
|
|
foma
Зарегистрирован: 10.05.04
Сообщения: 416
|
Добавлено: 10/08/04 в 05:59
|
|
Символ конца строки надо в двойных кавычках писать "\n". А если по теме то насколько я понимаю при чтении проблем быть не должно, особенно маленьких файлов. Для записи разделение доступа к файлу важно, а для чтения вроде не должно хотя хз. А вообще изобретать велосипед не обязательно Код: | $du=mktime(); $da=getdate($du); $d=$da["mday"].'-'.$da["mon"].'-'.$da["year"]; $du=$du-86400; $da=getdate($du); $dd=$da["mday"].'-'.$da["mon"].'-'.$da["year"]; $du=mktime(); $du=$du-172800; $da=getdate($du); $ddd=$da["mday"].'-'.$da["mon"].'-'.$da["year"];
srand((double)microtime()*1000000); $descs[0]=0; $i=0; function Enable_Descs(){ global $descs; $descs=file('descr.txt'); shuffle($descs); $n=count($descs); } function Show_Next_Desc($n,$kolvo){ global $d; global $dd; global $ddd; global $descs; global $i; $ii=0; print'<table>'; for($ii=0;$ii<$kolvo;$ii++){
$kolv=rand(12,20); print'<tr><td width="85">'; if ($n==0){print"<font size='2'><b>$d</b></font> - ";} if ($n==1){print"<font size='2'><b>$dd</b></font> - ";} if ($n==2){print"<font size='2'><b>$ddd</b></font> - ";} print"</td><td><a href='cj_out.php?fk=1&url=./galer.php'><font color='#0027a7'>$descs[$i] - ($kolv)</font></a></td></tr>"; $i++; } print'</table>'; }
|
<?Enable_Descs()?> - вот это перед выводом десков <?Show_Next_Desc($n,$kolvo)?>- вот это в том месте где выводить надо, т.е. первый параметр 0-сегодняшняя дата 1-вчера, 2-позавчера, второй параметр это количество десков которое надо вывести.
|
K началу
|
|
|
Trevet
Зарегистрирован: 26.02.04
Сообщения: 114
|
Добавлено: 10/08/04 в 18:10
|
|
Я себе писал тоже типа этого чтото из тестового файла читал с помощью file все в массив. Только мой скрипт не работал на сервере а я делал для генерации страниц его. У меня :::d::: вставлялся деск а :::t::: втавлялась тумба. А так как ты сделал сервак не будет нагрузку сильную испытывать? Если при каждом серфере считывать файл в массив?
|
K началу
|
|
|
foma
Зарегистрирован: 10.05.04
Сообщения: 416
|
Добавлено: 10/08/04 в 18:34
|
|
Trevet писал: | Я себе писал тоже типа этого чтото из тестового файла читал с помощью file все в массив. Только мой скрипт не работал на сервере а я делал для генерации страниц его. У меня :::d::: вставлялся деск а :::t::: втавлялась тумба. А так как ты сделал сервак не будет нагрузку сильную испытывать? Если при каждом серфере считывать файл в массив? |
Я чего-то не въехал мне это или не мне. Но имхо на сервере считать файл в 10к не проблема.
|
K началу
|
|
|
Trevet
Зарегистрирован: 26.02.04
Сообщения: 114
|
Добавлено: 10/08/04 в 18:43
|
|
foma писал: | Я чего-то не въехал мне это или не мне. Но имхо на сервере считать файл в 10к не проблема. |
Нет топикстартеру. Просто интересно будет такой скрипт сильно нагружать сервер или нет. Как я понял он собирается тумбокрут писать.
|
K началу
|
|
|
Stek
Зарегистрирован: 24.10.02
Сообщения: 1613
|
Добавлено: 10/08/04 в 18:50
|
|
А я не понял, нафига лочить файл при чтении то ? Насколько понял записи в файл нет, так что и лочить нет смысла. Хоть 20 процессов пущай одновременно читают, что из этого то такого.
|
K началу
|
|
|
foma
Зарегистрирован: 10.05.04
Сообщения: 416
|
Добавлено: 10/08/04 в 19:38
|
|
Stek писал: | А я не понял, нафига лочить файл при чтении то ? Насколько понял записи в файл нет, так что и лочить нет смысла. Хоть 20 процессов пущай одновременно читают, что из этого то такого. |
Во-во об этом-то я и хотел сказать ;) только что-то не очень получилось
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 14:32
|
|
2All: То что ненадо лочить при чтении я незнал, теперь знаю. Пишу не тумбокрут а дескописатель. Написал вернее.
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 14:35
|
|
2All: Оценки поставил. Всем спасибо.
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 16:50
|
|
2All: А вот и скрипт. Он имеет некоторые приемущества по сравнению с представленным выше. Как использовать написано в коментариях ниже.
Код: | <html><head><title>just_beginner</title><style> A.descs {FONT-SIZE: 10px; FONT-FAMILY: Arial, Verdana, sans-serif; TEXT-DECORATION: none; COLOR: #000000; } A:hover.descs { FONT-SIZE: 10px; FONT-FAMILY: Arial, Verdana, sans-serif; TEXT-DECORATION: underline; COLOR: #000000; } FONT.descsdays{ FONT-FAMILY: Arial; FONT-SIZE: 12px; FONT-WEIGHT: bold; } </style></head><body> <?php //function declaration function EchoDescs($cols,$rows,$ago){ $file = 'base.txt'; $readdescs = file($file); shuffle($readdescs); echo '<center><table border=0 width=100% cellpadding=10 cellspacing=5 bgcolor=#FFFFFF><tr>'; $ago*=4; for($x=0;$x<$cols;$x++){ $descsdate = getdate(strtotime("-$ago days")); $ago++; echo "<td bgcolor=#EEEEEE valign=top width=",100/$cols."%><font class=descsdays>" .$descsdate['month'].' '.$descsdate['mday'].' '.$descsdate['year'].'</font><br>'; for($y=0;$y<$rows;$y++){ $pics = rand(14,22); $z = $x * $rows+$y; echo '<a href="archive/' .strtolower(str_replace(' ','-',$readdescs[$z])). '.html" class="descs">'.$readdescs[$z].'['.$pics.' pics]</a><br>'; } echo '</td>'; } echo '</tr></table></center>'; }
//function calling EchoDescs(3,10,0);
/*HOW-TO-USE: EchoDescs(X,Y,Z); - X - кол-во столбцов - Y - количество десков в столбце - Z - порядковый номер вызова функции
Функцию можно вызывать столько сколько нужно однако параметр Z надо увеличивать на 1. Z первого вызова должен быть равным 0. EXAMPLE: EchoDescs(2,50,0); EchoDescs(2,50,1); EchoDescs(2,50,2); ... Файл base.txt содержит дески:
Pretty fat girl posing Chubby amateur babe Huge fat busty babe Blonde licking huge tits Busty housewife shows fat body Big titty plumper with oranges Plumper posing in a pool table ... */ ?> </body></html> |
прошу отзывов...
Последний раз редактировалось: just_beginner (11/08/04 в 17:06), всего редактировалось 3 раз(а)
|
K началу
|
|
|
Trevet
Зарегистрирован: 26.02.04
Сообщения: 114
|
Добавлено: 11/08/04 в 17:00
|
|
Что то не могу скачать. Пишет адрес неверный.
Скинь на емейл если не затруднит. trevet@hotmail.ru
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 17:05
|
|
2Trevet: Вот.
|
K началу
|
|
|
foma
Зарегистрирован: 10.05.04
Сообщения: 416
|
Добавлено: 11/08/04 в 17:12
|
|
Код: | $file = 'base.txt'; $readdescs = file($file); |
Вот нафига переменную лишнюю заводить? память лишняя?
Код: | $readdescs = file( 'base.txt'); |
А вообще скрипт как скрипт чего его пробовать, его использовать надо.
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 18:31
|
|
2foma: Как будто памяти много уйдет .
|
K началу
|
|
|
arachnO +
Зарегистрирован: 25.07.03
Сообщения: 897
|
Добавлено: 11/08/04 в 18:36
|
|
just_beginner писал: | 2foma: Как будто памяти много уйдет . |
просто ЗАЧЕМ ;) ;)
|
K началу
|
|
|
foma
Зарегистрирован: 10.05.04
Сообщения: 416
|
Добавлено: 11/08/04 в 18:46
|
|
just_beginner писал: | 2foma: Как будто памяти много уйдет . |
Блин, это же очевидно, привыкай с детсва писать оптимальный код. Только не переусердствуй, а то иногда можно долго трахаться с оптимизацией, когда это вовсе не обязатльно
|
K началу
|
|
|
just_beginner
Зарегистрирован: 07.05.04
Сообщения: 606
|
Добавлено: 11/08/04 в 18:58
|
|
2foma: Все, с сегодняшего дня буду привыкать .
|
K началу
|
|
|