Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Несколько вопросов по PHP

Ответить
Настройки темы
Разное - Несколько вопросов по PHP

Аватара для ManHack

Старожил


Сообщения: 361
Благодарности: 6

Профиль | Отправить PM | Цитировать


У меня возникли следующие вопросы, когдя я пытался разобраться...
1) Как индексировать содержимое папки? Есть большой фолдер (большой - это значит около 10к файлов схожего типа, дальше - больше).
Какую структуру языка PHP лучше всего использовать для хранения информации об каждом файле с учётом максимально простого, быстрого и эффективного обращения к ним из другого PHP-файла (или flash-приложения).
Массив не подходит, ибо одному элементу массива соответствует одно значение (а нужно хранить как минимум значения типа Ident, Vendor ID, Group и Link)
Я читал про такой тип данных в PHP как ресурс, но, как я понял, он хранит только ссылки, и вообще это не тип данных, а процедуры обращения к тем же GZ2-файлам или MySQL DB...
А как в PHP выглядит тип данных, идентичный типу record (запись) в Pascal/Delphi.
Очень хорошо, если бы вы подсказали не только как он выглядит и декларируется в программе, но и как обращаться к элементам, записывать значения в элементы записи и и.п.
2) Вот есть у файлов в Св-вах вкладочка "Сводка". Там Vendor ID и ещё всякая ерунда обычно хранится.
А как к этой штучке обращаться в PHP?
Вот допустим из этой папки с файлами (10000+ файлов) PHP-файл должен найти файл, у которого в св-вах во вкладке "сводка" в поле "создатель" написано "FileVendor01", как будет выглядеть ответственная за поиск часть этого PHP-файла?
3) Что из себя представляют ASPX (ASP, Active Server Pages) файлы?
Что есть ASP и зачем его используют?
Имело бы смысл реализовывать то, что описано в вопросах выше, с помошью ASP? (хотя заглянув в Википедию я сам ответил на этот вопрос, ответ отрицательный)
Где можно почитать литературу по ASP?
ASP и ASP.NET - разные вещи?

Отправлено: 17:25, 22-01-2009

 

Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Как индексировать - прочитать сведения об одном файле -> внести информацию в базу данных (mysql) -> следующий файл -> внести информацию...

Для сбора всей информации о файле используется функция stat(filename). Вывод в массив (с помощью print_r($arr) можно посмотреть содержимое массива).

Соответственно, поиск будет выполнять mysql. Делаем запрос вроде mysql_query("SELECT * FROM имя_таблицы WHERE filename='имя_файла.txt' "); или по другим полям. Будет гораздо быстрее и эффективнее, чем держать в памяти всю структуру в виде массива. Массив, кстати, подходит, просто многоуровневый надо сделать.

А вообще, не надо доводить файловую систему до такого состояния. 10 тысяч файлов в 1 папке - это глупость. Создавайте каждый месяц / неделю / день новую папку и кладите файлы в неё. Это значительно снизит нагрузку на серверную ОС.

ASP - язык программирования для веб от Microsoft. Используется с веб-сервером IIS. ASPX - откомпиленный ASP. ASP.net - дальнейшее развитие ASP. Язык представляет собой что-то вроде VisualBasic'а. Но PHP мне нравится больше

Часть заданных вопросов я не понял, поэтому, возможно, ответил не на те, которые надо =^_^'=
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:45, 22-01-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для ManHack

Старожил


Сообщения: 361
Благодарности: 6

Профиль | Отправить PM | Цитировать


Оу. Спасибо.
Примерно понятно, попробую, что у меня из этого получится.
Папочку в таком случае постараюсь раскидать по подпапкам, если от этого производительность возрастёт. Пока не слишком понятно по какому параметру раскидывать.

Только заметил, что вы, Coutty, анимэшник ^_^ Я, кстати, тоже тех же взглядов.
Анимэшники должны помогать друг другу, так что если что - я сразу же обращусь xD А какое ваше любимое анимэ? Простите, модератор-kamisama, за флуд не по теме ^_^

Отправлено: 19:33, 22-01-2009 | #3


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата ManHack:
Пока не слишком понятно по какому параметру раскидывать. »
Если файлы имеются - то по любому параметру - по времени создания или рандомом (а на них есть ссылки со страниц? Тогда лучше не трогать).
А потом при добавлении скрипт пусть следит - если в БД уже есть, скажем, 100 записей на эту папку (запрос типа "SELECT COUNT(*) FROM имя_таблицы WHERE имя_каталога = последнее_имя"), то создавать новую. "Последнее_имя" тоже надо где-то хранить, я думаю, либо делать кореллированный подзапрос, что не очень хорошо, как мне кажется.

Производительность возрастёт - попробуйте через виндовый проводник открыть папку с кучей файлов и с малым количеством. Разница будет видна на глаз.

Я всё мутно объясняю, но суть в том, что пути к файлам и свойства надо хранить в БД, а папки слишком большими не делать.

По анимэ у нас спец.тема есть
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:43, 22-01-2009 | #4


Аватара для ManHack

Старожил


Сообщения: 361
Благодарности: 6

Профиль | Отправить PM | Цитировать


Цитата:
(а на них есть ссылки со страниц? Тогда лучше не трогать)
Самих страниц пока что нет ^ ^
Файлы будут обрабатываться флеш-приложением, хотя над этим надо ещё хорошо подумать.

А для каждой папки придётся сделать отдельную таблицу?
Или можно в таблице как-то хранить не только ключи с их значениями, а ключ -> значение -> подзначение значения ? (3-уровня вложенности)
Просто на виртуальном хостинге, который я хочу использовать по-началу, стоит ограничение 20 таблиц для пользователей free-аккуанта. Я пока не уверен, хватит ли мне этих 20.
Или можно делать всё в одной таблице, а папки будут фигурировать только в полях 'link'?
Кстати, сколько записей может выдержать таблица? А какое количество оптимально?
Я имею ввиду в плане производительности в первую очередь.

Под терминов 'кореллированный подзапрос' что понимается?

Отправлено: 20:04, 22-01-2009 | #5


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Цитата ManHack:
А для каждой папки придётся сделать отдельную таблицу? »
Нет, всё в одну можно.
Примерно такие поля в таблице (пусть будет main для примера):
[ id | folder | filename | size | vendor | group | link ]
Достаточно? Можно и ещё добавить.
3 уровня вложенности - "не понимать")

Если выбирать по id, то такой код:
PHP код: Выделить весь код

// $_GET['id'] будет содержать запрос на необходимый файл

$res mysql_query("SELECT * FROM main WHERE id='" $_GET['id'] . "'");
$res mysql_fetch_assoc($res);
echo 
$res['folder'] . "/" $res['filename'];  // использование 

При добавлении:
PHP код: Выделить весь код

$lastfolder 224// где-то надо хранить имя последней папки

$files_in_last_folder 35// количество файлов в последней папке. Тоже где-то надо хранить
if ($files_in_last_folder >= 100)
  {
  
$lastfolder++;
  
$files_in_last_folder 1;
  }
if (
mysql_query("INSERT INTO main ('folder', 'filename', 'size', 'vendor', 'group', 'link') VALUES (" $lastfolder ", 'dkfueu.jpg', 127500, 'nya', 'mur', 'link12834')))
  {
  echo "
Запись о файле добавлена";
  } 

Ну и не забываем сам файл в папку записать.

Цитата ManHack:
Кстати, сколько записей может выдержать таблица? А какое количество оптимально? »
Выдержать может до 2 ГБ информации на таблицу или даже больше. Я не помню точно. Вопрос в том - даст ли хостер столько? Кроме того, нужно учитывать и нагрузку. 1 запрос в секунду - это совсем не то же самое, что 100 в секунду (здесь уже выделенный сервер нужен и СУБД помощнее. Например, PostgreSQL. Yahoo, говорят, на ней работает).

Цитата ManHack:
Под терминов 'кореллированный подзапрос' что понимается? »
Не обращайте внимания, я сегодня экзамен по базам данных сдавал, поэтому голова забита терминологией Это подзапрос на ту же таблицу, куда и основной запрос. Можно и без них
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:34, 22-01-2009 | #6


Аватара для Delirium

Ветеран


Сообщения: 5624
Благодарности: 936

Профиль | Отправить PM | Цитировать


Цитата Coutty:
ASP - язык программирования для веб от Microsoft. Используется с веб-сервером IIS. ASPX - откомпиленный ASP. ASP.net - дальнейшее развитие ASP. Язык представляет собой что-то вроде VisualBasic'а. Но PHP мне нравится больше »
Нет, ну я возмущен . Это с каких это пор asp.net - это нечто вроде VB? Я пишу полноценные на ASP.NET + C#. ^) а почитать доступным языком можно на intuit.ru - найдите требуемый курс и бесплатно читайте.

-------

Пройденные курсы:
[Microsoft №10174 Sharepoint], [SharePoint]
Мои проекты:[CheckAdmins], [NetSend7], [System Uptime], [Remote RAdmin LogViewer],[Netdom GDI], [Holidays - напоминалка о днях рождения]

А я офис-гуру :)

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:13, 23-01-2009 | #7


Аватара для Coutty

Кот Ти


Сообщения: 7318
Благодарности: 1204

Профиль | Отправить PM | Цитировать


Простите, я думал, что это со времён обычных ASP пошло...

Отправлено: 06:44, 23-01-2009 | #8


Deadooshka


Сообщения: 2511
Благодарности: 689

Профиль | Отправить PM | Цитировать


ASP как и ASP.NET это набор серверных объектов, функций, директив, которые реализуются с помощью поддерживаемого языка. В ASP - это скриптовые JS и VB. В ASP.NET - это компилируемые языки (основные C# и VB.NET). Существует и версия PHP для ASP.NET http://php-compiler.net/ - вроде бы независимые разработчики....

Отправлено: 07:36, 23-01-2009 | #9


Аватара для ManHack

Старожил


Сообщения: 361
Благодарности: 6

Профиль | Отправить PM | Цитировать


А как выполнять поиск по MySQL DB?
Ну допустим PHP-файл даёт юзеру формочку для поиска, в которую юзер что-то пишет, а скрипт ищет в БД.
Причём ищет сразу по нескольким таблицам БД (т.е. мы не знаем про что имеено юзер спрашивает, поэтому перебираем все возможные сочетания заданных юзером в форму слов во всех таблицах).
Как сделать такой поиск, обязательно разумным.
И как сделать, чтобы обращение к PHP-файлу поиска происходило из другого PHP-файла ("главная страница"), который передаёт пользовательский запрос файлу поиска и забирает результаты, чтобы их вывести (т.е. скрипт поиска освобождён от необходимости оформлять свои результаты на экране).

Отправлено: 17:26, 28-01-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Несколько вопросов по PHP

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - PHP - несколько вопросов ManHack Программирование и базы данных 38 26-08-2009 18:15
Несколько вопросов по ОС Master WEB Общий по Linux 33 02-08-2007 23:23
Несколько вопросов raingts Хочу все знать 2 30-01-2007 18:05
Несколько вопросов barbos Общий по Linux 8 16-12-2004 20:40
Несколько вопросов по RH 9 Frost Wolf Общий по Linux 12 07-09-2003 12:51




 
Переход