Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Постоянное хранение массива. как ? 
:(
    Опции темы
teplotaya
Дата 17.3.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 10.3.2006

Репутация: нет
Всего: 2



<?
... тут идет процедура добавления всех файлов из директории в массив $files[]
так как в директории больше 2000 файлов это отнимает небубовое кол-во процессорного времени.
?>

$files[$n] - дальше я использую этот массив для извлечения из него файлов (картинки)

как мне сделать так что бы процедура чтения файлов в массив выполналась только один раз при
первом заходе юзера на страничку ? как хранить массив files[] что бы каждый раз не выполнять
процедуру добавления файлов в массив ?





PM MAIL   Вверх
Darhazer
Дата 17.3.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 1
Всего: 29



записиваеш его в $_SESSION;

Код

session_start();
//... тут идет процедура добавления всех файлов из директории в массив $files[]
$_SESSION['files'] = $files;


Конечно, так код будет выполнятся один раз за юзеру, но по одном за каждом юзере. Если хочеш только один раз в ден, тогда надо записать массив $files в файле или в БД


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
teplotaya
Дата 17.3.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 10.3.2006

Репутация: нет
Всего: 2



здорово, я пожалуй совмещу использование сессей и чтение заранее проиндексированного каталога из файла
файл у меня такой:
file1.jpg
file2.jpg
file3.jpg
file4.jpg
file5.jpg
file6.jpg
...
file2000.jpg

или лучше хранить все в строчку через запятую ? а патом парсировать ?

вообще то что я использую для хранения информации в txt базе данных а в не mysql то какие минусы
по скорости там например ?
если все грамотно оптимизировать то это будет не хуже mysql ?



PM MAIL   Вверх
IvanB
Дата 17.3.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Цитата(teplotaya @ 17.3.2006, 14:01 Найти цитируемый пост)
вообще то что я использую для хранения информации в txt базе данных а в не mysql то какие минусы
по скорости там например ?

В защите минусы....
Хотя я обычно использую и то, и другое.
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
Serkys
Дата 17.3.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Цитата(teplotaya @ 17.3.2006, 14:01 Найти цитируемый пост)
если все грамотно оптимизировать то это будет не хуже mysql ?

мускул ты на файлах не обойдёшь
Цитата(Darhazer @ 17.3.2006, 12:55 Найти цитируемый пост)
Если хочеш только один раз в ден, тогда надо записать массив $files в файле или в БД

в куки писать serialize($files), затем через unserialize вытаскивать.
PM MAIL   Вверх
Darhazer
Дата 18.3.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 1
Всего: 29



Serkys,
Идея конечно очен хорошая. Но опять, если у тебя 1000 юзеров, для каждому будеш проверят списка. Но только один раз за весь ден, а не несколько раз, если юзер решил несколько раз зайти


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
teplotaya
Дата 18.3.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 10.3.2006

Репутация: нет
Всего: 2



Цитата(IvanB @ 17.3.2006, 19:21)
Цитата(teplotaya @  17.3.2006,  14:01 Найти цитируемый пост)
вообще то что я использую для хранения информации в txt базе данных а в не mysql то какие минусы
по скорости там например ?

В защите минусы....
Хотя я обычно использую и то, и другое.

расскажите пажалусто про безопастность хранения данных в txt формате.

PM MAIL   Вверх
Ciber SLasH
Дата 19.3.2006, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(teplotaya @ 18.3.2006, 21:43 Найти цитируемый пост)
расскажите пажалусто про безопастность хранения данных в txt формате.

К твоему файлу можно будет обратиться извне, т.е. можно будет в бродилке написать httр://your-page.ru/bd.txt. Наверно это имел ввиду IvanB. Но это можно обойти, если создать .htaccess с запретом на чтение txt-файлов.
PM   Вверх
IvanB
Дата 19.3.2006, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Цитата(Ciber SLasH @ 19.3.2006, 00:34 Найти цитируемый пост)
Наверно это имел ввиду IvanB.

Именно...
Простите, в следующий раз буду яснее выражаться.


Цитата(Ciber SLasH @ 19.3.2006, 00:34 Найти цитируемый пост)
Но это можно обойти, если создать .htaccess с запретом на чтение txt-файлов.

А записывать в них с посторонних компов возможно?
По моему, это тоже стоит блоконуть. smile

Это сообщение отредактировал(а) IvanB - 19.3.2006, 16:02
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
Ciber SLasH
Дата 19.3.2006, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(IvanB @ 19.3.2006, 06:57 Найти цитируемый пост)
А записывать в них с посторонних компов возможно?

Если дополнительно ещё и владельца файла поменять и атрибуты только на чтение поставить, то никто кроме админов и владельца не сможет ничего сделать.
PM   Вверх
Serkys
Дата 19.3.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1061
Регистрация: 19.4.2004

Репутация: 2
Всего: 22



Цитата(IvanB @ 19.3.2006, 06:57 Найти цитируемый пост)
А записывать в них с посторонних компов возможно?

Блокировать это всё в .htaccess надо.

С файлом не могут работать одновременно 2 скрипта, т.е. приходится ставить блокирование. Отсюда уменьшение скорости - скрипту приходится ждать, пока другой скрипт не закончит работу.
Цитата(Ciber SLasH @ 19.3.2006, 00:34 Найти цитируемый пост)
К твоему файлу можно будет обратиться извне, т.е. можно будет в бродилке написать httр://your-page.ru/bd.txt.

Файл можно засунуть в директорию, на уровень выше директории "www". Не все хостеры это позволяют, но зато его прочесть нельзя будет.
Цитата(IvanB @ 19.3.2006, 06:57 Найти цитируемый пост)
А записывать в них с посторонних компов возможно?

Возможно всё. Блокируй всё, что только можно. Помни: юзер - по умолчанию злобный хакер.
PM MAIL   Вверх
IvanB
Дата 19.3.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Цитата(Serkys @ 19.3.2006, 13:50 Найти цитируемый пост)
Помни: юзер - по умолчанию злобный хакер.

Вспомнилось:
Самый страшный вирус сидит за компьютером.

Т. е. в результате мы получим, что либо БД, либо текстовые файлы+настройки сервера....
--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
teplotaya
Дата 19.3.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 10.3.2006

Репутация: нет
Всего: 2



Код


session_start();

if ($_SESSION['now']<>$part) {     // делаем проверку что бы читать массив из файла только один раз

$files=file($part.".txt");            
$files=unserialize($files[0]);

$_SESSION['files'] = $files; 
$_SESSION['now'] = $part; 

$files=array_reverse($files);

}




я так понимаю что использование serialize, unserialize это самый оптимальный вариант по скорости ?
насчет одновременного использования файла в одно время тока одним скриптом это как я понимаю
только если файл открывается за запись ? может ли одновременно несколько скриптов юзать один
и тот же файл без блокирования тока на чтение ? --> $files=file($part.".txt"); ?

насчет .htaccess можно поподробней.
у меня в директории txt лежат файлы txt под каждую картинку файл с комментариями
нужно что бы тока мой скрипт имел права на чтение и запись в этот файл.
и что бы нибыло в этот файл доступа из вне как на чтение так и на запись.
что коекретно в этом случае надо писать в .htaccess ?

насчет прописывания chmod к файлу я в этом полный дуб.
расжуйте если не сложно какие настройки должны быть.


еще вопросик насчет защиты в формах что бы юзер не ввел всякой пурги типа экранирующих символов
и тегов то я делаю так:

$name=strtr($name,"\r","\n");
$name=str_replace("\n"," ",$name);
$name=str_replace("||"," ",$name);
$name=strip_tags($name,"<i>");

этого хватит для защиты от дурного пользователя ?


теперь насчет блокирования файла во время записи в него:

$open=fopen($part."/txt/".$id.".txt","a");
fclose($open);

непроизойдет ли такой нежелательной ситуации когда один и тот же файл один скрипт откроет на запись
обнулит а другой его закроет и произойдет потеря ранее сохраненной информации ?







PM MAIL   Вверх
Ciber SLasH
Дата 19.3.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(teplotaya @ 19.3.2006, 18:46 Найти цитируемый пост)
насчет .htaccess можно поподробней.

Цитата

<Files ~ "\.txt$">
Order allow,deny
Deny from all
</Files>


Цитата(teplotaya @ 19.3.2006, 18:46 Найти цитируемый пост)
еще вопросик насчет защиты в формах

Используй htmlspecialchars и для запросов к БД — mysql_real_escape_string и для экранирования произволных символов — addcslashes

Цитата(teplotaya @ 19.3.2006, 18:46 Найти цитируемый пост)
теперь насчет блокирования файла

Код

$fp = fopen(...);
flock($fp, LOCK_EX);  // блокировка файла
fwrite(...);
flock($fp, LOCK_UN);  // разблокировка
fclose($fp);

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1918 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.