CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
21.09.2005, 20:32:32
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 3
|
|
Performance bei mysql und blobs
hallo
Ich habe eine Datenbank, mit mehreren Tabellen sagen wir
tab1,tab2,tab3.
In tab3 sind jetzt jedemenge Blobs gespeichert (Ein virtuelles Dateisystem). Wirkt sich das geschwindigkeitstechnisch auch auf tab1 und tab2 aus?
Im Prinzip hat ja jede Tabelle ihre eigenen Dateien im Datenbankverzeichnis (frm, MYD und MYI), es sollte also nur tab3 langsam werden (Da die entsprechende Datendatei recht gross ist)
Ist das so richtig? Und weiss jemand wie das bei postgre aussieht?
Thx4help
farion
|
21.09.2005, 21:48:33
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 82
|
|
AW: Performance bei mysql und blobs
Hallo farion,
um erstmal auf Deine Frage zu antworten: Nein, das wirkt sich nicht auf die übrigen Tabellen aus, solange natürlich keine Beziehungen aufgerufen werden.
Aber um die Performance Deiner Datenbank zu erhöhen, würde ich die Dateien nur als String mit einem eindeutigen Schlüssel in der Datenbank ablegen. Die Dateien selbst packst Du in einen Ordner auf Deinem Server.
Das Auslesen der Datenbank geht ruck zuck und belastet auch Deine Transferrate nicht so sehr. Die eigentlichen Dateien werden nur bei Gebrauch/Download abgerufen.
Gruß,
Stevie B.
|
22.09.2005, 13:24:58
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 3
|
|
AW: Performance bei mysql und blobs
Okay danke erstmal.
Der Hintergedanke ist folgender - ich habe eine Benutzerverwaltung und die Dateien sollen dazu Rechte zugeteilt bekommen. Das würde so halt schön gehen.
Wenn ich die Dateien auf die Festplatte speichere, so muss ich ja dafür sorgen, dass sie nicht über zB.: www.domain.de/bild.jpg aufgerufen werden können, da ich so ja die Rechte nicht überprüfen könnte. Wie aber zeige ich sie dann an. Bei Bildern geht das noch mit dem image-funktionen, aber wenn ich irgendetwas anderes wie pdf, binärdatei etc habe...
Gruss Farion
|
22.09.2005, 13:38:15
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Performance bei mysql und blobs
Zitat:
Zitat von farion
Bei Bildern geht das noch mit dem image-funktionen, aber wenn ich irgendetwas anderes wie pdf, binärdatei etc habe...
|
Wenn mich nicht alles täuscht, müsste es so funktionieren:
PHP-Code:
<?php
$type = mime_content_type($file);
header('Content-Type: ' . $type);
readfile($file);
?>
Oder du bietest die Datei zum Download an: http://php-faq.de/q/q-datei-download.html
Geändert von xabbuh (22.09.2005 um 13:38:52 Uhr)
|
22.09.2005, 15:36:05
|
Anfänger
|
|
Registriert seit: Sep 2005
Beiträge: 3
|
|
AW: Performance bei mysql und blobs
ja so gehts, es steht in der Datenbank, ob eine Datei als Download ausgegeben werden soll.
Code:
<?php session_start();
require("config.php");
require("inc/functions/std.inc");
sql_connect();
require ("inc/classes/Query.inc");
//Template
require ("inc/classes/Template.inc");
//Rechtemanagement
require ("inc/classes/User.inc");
require ("inc/classes/Group.inc");
require ("inc/classes/RightsMgm.inc");
//Skinsupport
require ("inc/classes/Skin.inc");
$GLOBALS[skin] = new Skin();
function send404(){
header ( "HTTP/1.0 404 Not Found" );
$tmpl = new Template("./skins/".$GLOBALS[skin]->getSkin()."/tmpl/status",null);
$tmpl->set_file("main","404.tmpl");
$tmpl->parseout("main");
}
function send403(){
header ( "HTTP/1.0 403 Forbidden" );
$tmpl = new Template("./skins/".$GLOBALS[skin]->getSkin()."/tmpl/status",null);
$tmpl->set_file("main","403.tmpl");
$tmpl->parseout("main");
}
if(isset($_GET[id])){
$GLOBALS[rights] = new RightsMgm();
$query = new Query("SELECT * FROM ".$GLOBALS[sql_prefix]."dateisys WHERE id = '".$_GET[id]."'");
if($query->numRows()){
if($daten->type == "dir")
send404();
else{
$daten = $query->fetch_object();
if(checkRights($GLOBALS[rights]->getUser(),$daten->rechte,$daten->user_id,$daten->group_id) >= 1){
header("Content-type: ".$daten->type);
if($daten->download == 1)
header("Content-Disposition: attachment; ".$daten->name);
@readfile($GLOBALS[datadir]."".$daten->name);
}else
send403();
}
}else
send404();
}else
send404();
?>
Da sind jetzt halt noch ein paar includes, sollte aber selbsterklärend sein.
Auf jedenfall kann ich so jetzt überprüfen ob die Datei vorhanden ist und ob der momentane User Rechte hat die Datei anzusehen.
Gruss farion
Geändert von farion (22.09.2005 um 15:36:24 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:34:22 Uhr.
|