Как упростить запрос из базы ?

antson

Новичок
Партнер клуба
nnn21
ко всем остальным замечаниям дабавлю про звездочку.
читаются все поля (и твое поле в мегабайт)
вот и тормоз
 

Mols

Новичок
Gas
Почему "если бы" ? Чаще всего веб сервер настроен так, что он отдаёт на исполнение файлы с расширением .php. И если есть возможность зааплодить файл на серв, в каталог который напрямую доступен по URL. И при этом сохраняется имя файла который аплоадит юзер, то нет никаких сложностей в том, чтобы написать скрипт назвать его script.php, зааплоадить и потом спросить его по известному URL. Веб сервер отдаст его на исполнение в ПХП.
Просто это настолько очевидно, что нормальные люди так делать не будут. А вот человек который два дня назад узнал о ПХП запросто такое может отчудить.

-~{}~ 31.01.08 15:21:

[offtop]
Кроме того... если сервером рулят более менее нормальные люди, то убить сервер не удастся. Прав у пользователя от которого работает ПХП не хватит.
[/offtop]
 

Gas

может по одной?
Mols
ты делаешь слишком много допущений, nnn21 даже не сказал откуда эти файлы берутся.
Если бы ТС написал такие сомнения - тогда (возможно) пошёл бы конструктивный диалог, а так он прочитал где-то что-то, возможно не всё понял и делает однозначные не верные выводы.

-~{}~ 31.01.08 14:27:

то убить сервер не удастся
Я образно сказал. Квалифицированные кадры - тоже далеко не всегда встречаются, но с текущим проектом можно было бы чё-то сделать, даже с теми правами :)
 

Mols

Новичок
Gas
Я не делаю допущений. Я говорю о том, что это возможно и на самом деле важно. И предыдущий Ваш пост заставил меня просто более подробно описать как это можно сделать.
В этом топике есть рекомендации новичку относительно хранения файлов в ФС. Я просто пояснил, что нужно иметь в виду если файлы аплоадит пользователь.
 

nnn21

Новичок
Автор оригинала: antson
nnn21
ко всем остальным замечаниям дабавлю про звездочку.
читаются все поля (и твое поле в мегабайт)
вот и тормоз
кусок скрипта

if($id=$_GET[givefile]){
mysql_connect("localhost", "login", "pass");
mysql_select_db("dbname");
$result=mysql_query("SELECT body,name,type FROM file WHERE id='$id' ");
$row=mysql_fetch_array($result);
$str = base64_decode($row[body]);
Header("Content-Disposition: attachment; filename=$row[name]");
Header("Content-Type: ".$row[type]);
header("HTTP/1.1 200 OK");
header("Accept-Ranges: bytes");
header("Content-Length: $row[size]");
Header("Connection: close");
echo $str;
die();
}

select я модифицировал, сделав выборку из трех необходимых для просмотра файла полей, особо не помогло ...
выбирал из body (с типом поля mediumblob), name, type ...
Убрав какое нибудь из полей из запроса , уже файл не "выкачивается" с сервера


----
 

Gas

может по одной?
nnn21
в чём у тебя сейчас проблема не понятно, медленно работает что-ли?
И зачем в базе хранить в формате base64, чтоб места больше занимало и при отдаче сервер нагружать лишней операцией над мегабайтной строкой?
 

nnn21

Новичок
Gas, да, работает медленно ...
а в каком формате лучше хранить файлы в базе ?
 

Gas

может по одной?
nnn21
10-ый раз повторюсь - файлы в базе хранить не нужно, а хранить на диске и отдавать средтсвами webserver'а, тогда работать будет быстро.
но если уж хранишь в базе, то храни как есть, без конвертирования base64_encode при вставке, decode на выходе и не жалуйся что медленно.
 

nnn21

Новичок
Gas, thnks но не получается без "encode- decode" =(

-------------------
if (is_uploaded_file($_FILES['filename']['tmp_name']))
{
$f = fopen($_FILES['filename']['tmp_name'] ,"rb");
while(!feof($f))
$up_f.= fread($f,2048);
fclose($f);
$up_f = base64_encode($up_f);
}
else echo "ssssss";



При попытке закоментировать $up_f = base64_encode($up_f);
на выходе не конвертируя (decode) файл не читается =((((


Кстати каким способом после загрузки файла на сервер , этот загруженный файл с сервера "выудить" ?
Ошибка опять же с кодированием - декодированием ... Вроде размер файла, имя и тип файла совпадают, а вот при попытке открыть файл - ошибка

---------
 

TutanXamoN

Новичок
никогда не наталкивался на статьи посвященные хранению файлов в фаловой системе ..
И файлов в файловой системе никогда не видел. И скрипты твои не в файловой системе хранятся. Да?
 

nnn21

Новичок
И файлов в файловой системе никогда не видел. И скрипты твои не в файловой системе хранятся. Да?

-- offtop =\

в этой теме я периодически встречаю ответы от пользователей (некоторых), которые к теме вообще не относятся, даже не ответы, а насмешки, печально, я понимаю там глумеж друг над другом на форуме компьютерных игр , где тусят 15-летние , а тут программисты! Программистов всегда воспринимал как несколько другой контингент людей.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
в этой теме я периодически встречаю ответы от пользователей (некоторых), которые к теме вообще не относятся, даже не ответы, а насмешки, печально, я понимаю там глумеж друг над другом на форуме компьютерных игр , где тусят 15-летние , а тут программисты! Программистов всегда воспринимал как несколько другой контингент людей.
Тебе 50 человек говорит что не нужно хранить файлы в бд. Но нет-же у тебя "хотелка" странная. Какого ты отношения к себе хочешь? Нормального?
Ну так сам будь не как 15-летний юнец...
 

TutanXamoN

Новичок
nnn21
Возможно я Вас огорчу, но мой ответ имеет прямое отношение к етой теме если Вы не смогли понять его в форме "файлы должны быть файлами" я попробовал преподнести Вам ету мысль в другом виде.
Если Вы ету мысль так и не поняли или не осознали её правильность - ето Ваши проблемы, и в данной конкретной ситуации скорее Вы себя ведёте как 15-летний геймер- "я так делал я так делаю я так делать и буду. а теперь скажите почему у меня всё так плохо и как улучшить мой гениальный метод".

ЗЫ: если Вы считаете что после такого количества ответов с одинаковой тематикой и отсутствием корректной реакции от Вас тема может не скатиться в оффтоп ето опять таки 15-летняя наивность.
 

nnn21

Новичок
----
получается следующее - если хранить файлы в базе, то скрипт будет работать медленно, верю Mr_Max
, ведь 50 человек говорит , но самое удивительное, что в разное время, например вечером или днем, всё грузится быстро, даже при условии, что храним в MySQL, а не в файловой системе !!!
...



if($id=$_GET[givefile]){
mysql_connect("localhost", "login", "pass");
mysql_select_db("PDF_FILES");
$file_result=mysql_query("SELECT * FROM file WHERE id='$id' ");
$row=mysql_fetch_array($file_result);
$str = base64_decode($row[body]); // body
header("Content-Disposition: attachment; filename=$row[name]"); // name
header("Content-Type: ".$row[type]); // type
header("Content-Length: $row[size]"); // size
header("HTTP/1.1 200 OK");
header("Accept-Ranges: bytes");
header("Connection: close");
echo $str;
die();
}



В момент выборки файлов, работает функуия .....

function show_preprint_info1($article_row,$year,$id_article)
{
echo "$article_row[number] ";
echo "$article_row[title]";
echo "$article_row[body]";
$file_result =mysql_query("SELECT id, body,size,name, type FROM file where id_article=$article_row[id] LIMIT 1 ");
if($file_row=mysql_fetch_array($file_result))
echo"<a href=content.php?ask=true&year=$year&givefile=$file_row[id]&id_article=$article_row[id]>
Скачать в формате pdf </a>";

}
 

Gas

может по одной?
Ermitazh
почитай первые посты топика ещё раз и увидишь что никакие explain'ы тут не нужны.
 
Сверху