anpera.net
https://anpera.dyndns.org/phpbb3/

dbwrapper.php auf MySQLI-Basis (Achtung, Beta!!)
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=43&t=2177
Seite 1 von 1

Autor:  Eliwood [ So 29 Jan, 2006 16:17 ]
Betreff des Beitrags:  dbwrapper.php auf MySQLI-Basis (Achtung, Beta!!)

Wichtig:
Bevor du weiterliest, vergewissere dich, dass du PHP 5 und die mysqli-Erweiterung zur Verfügung hast.

Ob das zu überprüfen, kannst du folgenden Code ausführen:

[php]if(function_exists("mysqli_connect")) echo "Ja, ich darf weiterlesen";
else echo "Nein, ich darf nicht weiterlesen";[/php]

Ergebnis erfolgreich? Dann mache sofort ein BackUp der common.php und der dbwrapper.php, bevor du weiterliest!

Einbau:

Öffne common.php, Suche:

[php]link = db_connect($DB_HOST, $DB_USER, $DB_PASS) or die (db_error($link));
db_select_db ($DB_NAME) or die (db_error($link));
define("LINK",$link);[/php]

Und ersetze vollständig mit:

[php]db_connect($DB_HOST,$DB_USER,$DB_PASS,$DB_NAME);[/php]
Save & Close.

Öffne dbwrapper.php, Suche:

[php]function db_query($sql){
// [...]
return $r;
}[/php]
Ersetze mit

[php]function db_query($sql)
{
global $session,$dbqueriesthishit,$dbtimethishit,$mysql_object;
$dbqueriesthishit++;
$dbtimethishit -= getmicrotime();

$r = $mysql_object->Query($sql);

$dbtimethishit += getmicrotime();
return $r;
}[/php]

Suche (Falls nicht vorhanden, einfach einfügen):
[php]function db_insert_id($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_insert_id()
{
global $mysql_object;
$dbtimethishit -= getmicrotime();

$r = $mysql_object->insert_id;

$dbtimethishit += getmicrotime();
return $r;
}[/php]

Suche:
[php]function db_error($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_error()
{
global $mysql_object;

$errno = $mysql_object->Errno;
$error = $mysql_object->Error;
$r = "<strong>Datenbankfehler!</strong><br>Fehler Nummer #".$errno.", Meldung: <br>".$error;
return $r;
}[/php]

Suche:
[php]function db_fetch_assoc($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_fetch_assoc($result){
global $dbtimethishit;
$dbtimethishit -= getmicrotime();

$r = $result->Fetch_Assoc();
$dbtimethishit += getmicrotime();
return $r;
}[/php]

Suche:
[php]function db_num_rows($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_num_rows($result){
global $dbtimethishit;
$dbtimethishit -= getmicrotime();

$r = $result->num_rows;

$dbtimethishit += getmicrotime();
return $r;
}[/php]

Suche:
[php]function db_affected_rows($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_affected_rows($link=false){
global $dbtimethishit,$mysql_object;
$dbtimethishit -= getmicrotime();

$r = $mysql_object->affected_rows;

$dbtimethishit += getmicrotime();
return $r;
}[/php]

Suche:
[php]function db_connect($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_connect($host,$user,$pass,$database){
global $dbtimethishit,$mysql_object;

$dbtimethishit -= getmicrotime();
$mysql_object = new MySQLi($host,$user,$pass,$database);

$dbtimethishit += getmicrotime();
}[/php]

Suche:
[php]function db_free_result($sql){
// [...]
return $r;
}[/php]
Ersetze mit
[php]function db_free_result($result){
global $dbtimethishit;
$dbtimethishit -= getmicrotime();

$r = $result->Free();
$dbtimethishit += getmicrotime();
return $r;
}[/php]

Speichern und Testen!

Achtung: Diese Erweiterung sollten wirklich nur Erfahrenere Programmierer einsetzen, da die mysqli-Erweiterung noch experimentell ist!!

Ein Beispiel noch:
Kämpferliste, 25 User, mit Standart: 0.08 Sekunden
Mit Dieser Erweiterung: 0.01 Sekunden
*gg*

Quelle:
http://ch.php.net/manual/de/ref.mysqli.php

Autor:  Death Lord [ So 29 Jan, 2006 16:38 ]
Betreff des Beitrags: 

Also sehr ratsam für server mit vielen usern.... ;)

Autor:  Kevz [ So 29 Jan, 2006 18:05 ]
Betreff des Beitrags: 

Death Lord hat geschrieben:
Also sehr ratsam für server mit vielen usern.... ;)

-Nö dem stimm ich nicht ganz zu, es kann bereits Auswirkungen haben bei wenigen. Es müssen nicht immer xxx viele sein. Mach dir nen Benchmark dann siehst bereits ne Wirkung bei wenigen Datensätzen.

Autor:  Meteora [ Do 02 Feb, 2006 20:11 ]
Betreff des Beitrags: 

[php]
function db_fetch_assoc($result){
global $dbtimethishit;
$dbtimethishit -= getmicrotime();

$r = $result->Fetch_Assoc();
$dbtimethishit += getmicrotime();
return $r;
}
[/php]

funktioniert bei mir nur mit:

[php]
function db_fetch_assoc($result){
global $dbtimethishit;
$dbtimethishit -= getmicrotime();

$r = $result->Fetch_Assoc;
$dbtimethishit += getmicrotime();
return $r;
}
[/php]

mfg

Autor:  Eliwood [ Fr 03 Feb, 2006 16:12 ]
Betreff des Beitrags: 

Seltsam...
Laut PHP-Net:

Zitat:
class mysqli_result {

array fetch_assoc ( void )

}


Ist das ne Funktion... Na ja, wahrscheinlich eine der Nebensymptome der ständigen weiter entwicklung ;)

Autor:  azraeldemon [ Sa 02 Dez, 2006 22:59 ]
Betreff des Beitrags: 

Fatal error: Trying to clone an uncloneable object of class mysqli in /is/htdocs/wp1054914_R0CVX3A1A2/www/mystara/dbwrapper.php on line 97

function db_connect($host,$user,$pass,$database){
global $dbtimethishit,$mysql_object;

$dbtimethishit -= getmicrotime();
$mysql_object = new MySQLi($host,$user,$pass,$database);

$dbtimethishit += getmicrotime();
}

kann mir einer sagen wieso ich ein ja bekomme es aber dennoch nicht funzt?

Autor:  Nightborn [ Sa 02 Dez, 2006 23:31 ]
Betreff des Beitrags: 

Wäre an mysqli Erweiterung auch interessiert, in 1.1.1 wirds unterstützt, sind lib-files da btw.

Autor:  Eliwood [ So 03 Dez, 2006 14:55 ]
Betreff des Beitrags: 

@ azraeldemon: PHP-Version?

@ Nightborn: Ich habe ja Chris die Funktionen geschickt... ;)
Und ansonsten komm ich nicht draus, was du sagen willst *g*

Autor:  azraeldemon [ So 03 Dez, 2006 21:25 ]
Betreff des Beitrags: 

@ eliwood : habe php version 5.1.5 laufem auf dem server!

Autor:  Taikun14 [ So 03 Dez, 2006 21:48 ]
Betreff des Beitrags: 

In der php.ini 'zend.ze1_compatibility_mode' auf OFF setzen. Dann muesste es klappen.

Autor:  Darkness [ So 03 Dez, 2006 21:59 ]
Betreff des Beitrags:  Re: dbwrapper.php auf MySQLI-Basis (Achtung, Beta!!)

Mir ist beim Überfliegen ne KLeinigkeit aufgefallen^^

[php]function db_insert_id()
{
global $mysql_object;
$dbtimethishit -= getmicrotime();

$r = $mysql_object->insert_id;

$dbtimethishit += getmicrotime();
return $r;
}[/php]
da müsste
[php]global $mysql_object, $dbtimethishit;[/php]
stehen^^


und noch was (is nicht soo wichtig, aber egal^^)
[php]function db_query($sql)
{
global $session,$dbqueriesthishit,$dbtimethishit,$mysql_object;
$sql = get_cache($sql);
$dbqueriesthishit++;
$dbtimethishit -= getmicrotime();

$r = $mysql_object->Query($sql);

$dbtimethishit += getmicrotime();
return $r;
} [/php]
ist das [php]global $session[/php]
eigentlich überflüssig...

Autor:  Drazaar [ So 03 Dez, 2006 22:53 ]
Betreff des Beitrags: 

Zitat:
Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1037182_J4AY65IMLD/www/logd/durscripts.php on line 6
Datenbankfehler!
Fehler Nummer #, Meldung:


Dieser Fehler existiert nun, seit ich dieses Update gemacht habe. Ist mein Wohnviertel...

Autor:  Taikun14 [ So 03 Dez, 2006 23:33 ]
Betreff des Beitrags: 

Eigentlich könntest du das doch aus deiner houses.php ausklammern und dann muesste es wieder gehen öö'

[php]
require_once("durscripts.php");
adddbfieldifne("accounts","housesleep","INT (10) unsigned","housekey");
adddbfieldifne("houses","housepic","TEXT","description");
adddbfieldifne("houses","vacationlock","TINYINT (4) unsigned","status");
adddbfieldifne("furniture","furnpic","TEXT","description");
adddbfieldifne("furniture","contributor","TEXT","dkneeded");
[/php]

Autor:  Drazaar [ So 03 Dez, 2006 23:43 ]
Betreff des Beitrags: 

Taikun14 hat geschrieben:
Eigentlich könntest du das doch aus deiner houses.php ausklammern und dann muesste es wieder gehen öö'

[php]
require_once("durscripts.php");
adddbfieldifne("accounts","housesleep","INT (10) unsigned","housekey");
adddbfieldifne("houses","housepic","TEXT","description");
adddbfieldifne("houses","vacationlock","TINYINT (4) unsigned","status");
adddbfieldifne("furniture","furnpic","TEXT","description");
adddbfieldifne("furniture","contributor","TEXT","dkneeded");
[/php]

Nein, in der "durscripts.php" sind einige Dinge drin, wie z.B. die Straßennamen, etc. Wenn ich "require_once "durscripts.php";" lösche, dann wird mir die houses.php einen Fehler a la "Call to unknown function "blablubb() (<- Ich stehe in durscripts.php)"........" geben...^^

Autor:  Taikun14 [ So 03 Dez, 2006 23:52 ]
Betreff des Beitrags: 

Hast recht, hab den Select übersehen... Naja, vielleicht weiss ich morgen mehr, wenn nicht einer schneller is. ( Kannes nirgens was testen wegen php 5 :P )

PS: Versuchs mal mit mysqli_num_fields ..

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/