Реклама на сайте Advertise with us
Тема: И еще вопросик... Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе 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".
А если по теме то насколько я понимаю при чтении проблем быть не должно, особенно маленьких файлов. Для записи разделение доступа к файлу важно, а для чтения вроде не должно хотя хз.
А вообще изобретать велосипед не обязательно icon_smile.gif

Код:
$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 процессов пущай одновременно читают, что из этого то такого.

Во-во об этом-то я и хотел сказать ;) только что-то не очень получилось icon_smile.gif

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');

А вообще скрипт как скрипт icon_smile.gif чего его пробовать, его использовать надо.

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 11/08/04 в 18:31     

2foma: Как будто памяти много уйдет icon_smile.gif .

K началу

 
Информация о пользователе arachnO +


Зарегистрирован: 25.07.03
Сообщения: 897
Ссылка на сообщениеДобавлено: 11/08/04 в 18:36     

just_beginner писал:
2foma: Как будто памяти много уйдет icon_smile.gif .


просто ЗАЧЕМ ;) ;)

K началу

 
Информация о пользователе foma


Зарегистрирован: 10.05.04
Сообщения: 416
Ссылка на сообщениеДобавлено: 11/08/04 в 18:46     

just_beginner писал:
2foma: Как будто памяти много уйдет icon_smile.gif .

Блин, это же очевидно, привыкай с детсва писать оптимальный код. Только не переусердствуй, а то иногда можно долго трахаться с оптимизацией, когда это вовсе не обязатльно icon_smile.gif

K началу

 
Информация о пользователе just_beginner


Зарегистрирован: 07.05.04
Сообщения: 606
Ссылка на сообщениеДобавлено: 11/08/04 в 18:58     

2foma: Все, с сегодняшего дня буду привыкать icon_smile.gif .

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »