PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   php / header / image / sql (http://www.selfphp.de/forum/showthread.php?t=18498)

Pinkrabbit 26.01.2008 13:16:51

php / header / image / sql
 
Hi Gulli User

Habt ihr eine ahnung wie ich diese script ein bisschen
schneller machen kann also optimieren ???

Mit dem header in der sql abfrage bin ich mir auch net
ganz so sicher. z.B der header:

header("Content-type: $image_format");
readfile($image_path);

Kann man des hier so stehen lassen. Oder gibt es noch
zusätzlich wichtige Informationen zum header ???

Die Sql abfrage gibst es da noch einen trick wie man
den sql befehl schneller machen kann ??

thx

PHP-Code:

<?php
if (isset($_GET['i'])) {
$i $_REQUEST['i'];
define("DB_USERNAME""yscsc");
define("DB_PASSWORD""yscys");
define("DB_HOST""cyssy");
define("DB_NAME""yscysc");

class 
db {
function 
db_connect() {
$db mysql_connect(DB_HOST,DB_USERNAME,DB_PASSWORD);
$db_connect mysql_select_db(DB_NAME,$db); }

function 
db_unconnect() {
mysql_close();
}
}
$db = new db;
$db->db_connect();

$sql "SELECT image_name FROM meine_images WHERE image_name='$i' LIMIT 0,1";
$a mysql_query($sql);
$b mysql_num_rows($a);
if (
$b == "1") {
$da mysql_fetch_array($a);
$image_name $da['image_name'];
$image_format $da['image_format'];
$image_save $da['image_save'];

switch(
$image_save) {
      case 
"1"$pa="http://www.example.com/files/"; break;
      default: 
$pa="http://www.example.com/files/"; }
$image_path $pa.$image_name;
$db->db_unconnect();

header("Content-type: $image_format");
readfile($image_path); }
else { } }
?>


ascer 27.01.2008 02:06:19

AW: php / header / image / sql
 
also wenn du es noch nicht hast dann würde ich mal sagen INDIZES in deine DB bauen, oder vielmer einen INDEX auf `image_name` da du ja nur 1 Datensatz aus der DB lädst...
da ist ein Index auf jedenfall angebracht...

achja und ich würde den default bei dir in der Switch-Anweisung als erstes bauen, also vor den case "1"...denn, zumindest "as far as i know", wird die switch anweisung ja von oben nach unten durchlaufen und wenn dein default tatsächlich öfter genutzt wird als dein "1" läuft es ein bisschen ( also vielleicht 1ms oder so^^ wenn überhaupt^^ ) schneller...

oh und wenn nicht nötig kannst du dir das db_unconnect sparen, das kostet zwar auch nicht viel zeit aber ein bisschen zeit auf jedenfall ihn das ganze aufbauen zu lassen und sobald ein script komplett durchlaufen ist wird die Verbindung zur Datenbank sowieso getrennt...

und deine DB-Klasse tut ja auch nicht wirklich viel, soll heissen ein ganz einfach gehaltenes connect ( ohne function oder class ) dürfte zwar auch nur wenn überhaupt 1ms mehr perfomance geben, aber ist auf jedenfall auch performanter und da deine klasse ja echt nicht mehr tut in dem skript kannste es auch weglassen und ganz normal schreiben also in keine klasse oder funktion...


gruß,
Ascer

ascer 27.01.2008 02:11:04

AW: php / header / image / sql
 
PS: was ich noch gar nicht gesehen hab deine switch anweisung tut ja in beiden fällen dasselbe...soll heissen weg mit der Switch-Anweisung = 1 abfrage weniger^^

und nimm für den pfad ne konstante ganz ohne variable wenn du die variable sowieso nich änderst...und zwar konstant in der deklaration...
sprich lass das $pa ganz weg und mach es so:
$image_path = "http://www.example.com/files/".$image_name;

das spart dann 1 variablen deklaration und die ganze switch-anweisung ein

Pinkrabbit 27.01.2008 16:21:13

AW: php / header / image / sql
 
PHP-Code:

<?php
if (isset($_GET['i'])) {
$i $_GET['i'];
define("DB_USERNAME""yscsc");
define("DB_PASSWORD""yscys");
define("DB_HOST""cyssy");
define("DB_NAME""yscysc");

function 
db_connect() {
$db mysql_connect(DB_HOST,DB_USERNAME,DB_PASSWORD);
$db_connect mysql_select_db(DB_NAME,$db); }
db_connect();

$sql "SELECT image_name FROM meine_images WHERE image_name='$i' LIMIT 0,1";
$a mysql_query($sql);
$b mysql_num_rows($a);

if (
$b == "1") {
$da mysql_fetch_array($a);
$image_name $da['image_name'];
$image_format $da['image_format'];
$image_save $da['image_save'];

switch(
$image_save) {
    default: 
$image_path "http://www.example.com/files/".$image_name;
    case 
"1"$image_path "http://www.example.com/files/".$image_name; break; }

header("Content-type: $image_format");
readfile($image_path); }
else { } die; }
?>

Du meinst des so ??
Des mit dem INDEX auf `image_name` wie mach ich so was ???
Wenn ich einen INDEX erstelle verändert sich dann auch das feld ???
Glaubst du des ist für einen Pichoster zu langsam
wenn ich eine hatccess-Datei mit folgendem Inhalt
ins Verzeichnis kopiere:

Inhalt:
RewriteEngine on
RewriteRule ^(.*)\.(jpg|jpeg|JPG|JPEG|Jpeg|Jpg|Gif|GIF|gif|PNG|png|Png)$ i.php?i=$1.$2

Tumasch 31.01.2008 14:50:27

AW: php / header / image / sql
 
1. benutz mysql_pconnect

2. ersetz

switch($image_save) {
default: $image_path = "http://www.example.com/files/".$image_name;
case "1": $image_path = "http://www.example.com/files/".$image_name; break; }


durch

$image_path = "http://www.example.com/files/".$image_name;


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:15:48 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.