Hallo liebe Community,
heute habe ich mal keine "Frage" in diesem Sinne sondern eher ne Anmerkung zu machen, zu der ich gern eure Meinungen hören würde!
Ich beschäftige mich seit neuestem mit den PHP Design Pattern - sicherlich kennen sich einige von euch schon gut drain aus - ich halt weniger
Ich habe viel darüber gelesen und vorallem auch, dass es viel zur Performance einer Web-Applikation beiträgt, wenn man halt Design Pattern nutzt.
Also habe ich mich grad mal dran gemacht und einen Test geschrieben - nen einfaches Singleton siehe hier:
gegen dieses Variante hier:
Beides "Instanziiert" über folgende Datei:
Wie gesagt, ich lerne hier erst und war daher mit den Messwerten ein wenig überfordert bzw. etwas verblüfft:
Datenbankverbindung steht!
ID: 10
ID: 15
Das selbe Objekt!
Laufzeit: 0.010672092437744 Sekunden!
Datenbankverbindung steht!
ID: 10
Datenbankverbindung steht!
ID: 15
Nicht das selbe Objekt!
Laufzeit: 0.021194934844971 Sekunden!
In einigen Messungen machte das sogar noch einen größeren Unterschied...
Nun die Frage - kann ich also davon ausgehen, dass mir die Design Pattern immer solche fantastischen Werte erbringen? Liegt das hier am Einzelfall?
Habt Ihr denn schon Erfahrungen mit den Design Pattern? Wenn ja, würde mich eure Meinung dazu sehr interessieren!
Liebe Grüße
heute habe ich mal keine "Frage" in diesem Sinne sondern eher ne Anmerkung zu machen, zu der ich gern eure Meinungen hören würde!
Ich beschäftige mich seit neuestem mit den PHP Design Pattern - sicherlich kennen sich einige von euch schon gut drain aus - ich halt weniger

Ich habe viel darüber gelesen und vorallem auch, dass es viel zur Performance einer Web-Applikation beiträgt, wenn man halt Design Pattern nutzt.
Also habe ich mich grad mal dran gemacht und einen Test geschrieben - nen einfaches Singleton siehe hier:
PHP:
<?php
class db{
private static $instance=NULL;
protected $db_name;
protected $db_user;
protected $db_pw;
protected $db_host;
public $dbh;
private function __construct(){
$this->db_name="****";
$this->db_user="****";
$this->db_pw="****";
$this->db_host="localhost";
$this->dbh=new mysqli($this->db_host, $this->db_user, $this->db_pw, $this->db_name);
if(isset($this->dbh->connect_error)){
echo $this->dbh->connect_error;
}else{
echo"Datenbankverbindung steht!<br>";
}
}
public static function getInstance(){
if(self::$instance==NULL){
self::$instance = new DB();
}
return self::$instance;
}
}
?>
gegen dieses Variante hier:
PHP:
<?php
class DBA{
protected $db_name;
protected $db_user;
protected $db_pw;
protected $db_host;
public $dbh;
public function __construct(){
$this->db_name="****";
$this->db_user="****";
$this->db_pw="****";
$this->db_host="localhost";
$this->dbh=new mysqli($this->db_host, $this->db_user, $this->db_pw, $this->db_name);
if(isset($this->dbh->connect_error)){
echo $this->dbh->connect_error;
}else{
echo"Datenbankverbindung steht!<br>";
}
}
public function __destruct(){
$this->dbh->close();
}
}
Beides "Instanziiert" über folgende Datei:
PHP:
<?php
$a="Eva";
$b="MT";
$start=microtime(true);
include_once 'classes/class_DB.php';
$conn=db::getInstance();
$stmt=$conn->dbh->prepare("SELECT id FROM regger_scripts WHERE script_name=?");
$stmt->bind_param("s", $a);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0){
$stmt->bind_result($id);
while($stmt->fetch()){
echo"ID: {$id}<br>";
}
}
$conn2=db::getInstance();
$stmt=$conn2->dbh->prepare("SELECT id FROM regger_scripts WHERE script_name=?");
$stmt->bind_param("s", $b);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0){
$stmt->bind_result($id);
while($stmt->fetch()){
echo"ID: {$id}<br>";
}
}
if($conn === $conn2){
echo"Das selbe Objekt!<br>";
}else{
echo"Nicht das selbe Objekt!<br>";
}
$end=microtime(true);
$zeit=$end-$start;
echo"Laufzeit: {$zeit} Sekunden!<br>";
echo"<br><br><hr>";
$start2=microtime(true);
require_once 'classes2/class_DB.php';
#$c="Active4u";
$data=new DBA();
$stmt=$data->dbh->prepare("SELECT id FROM regger_scripts WHERE script_name=?");
$stmt->bind_param("s", $a);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0){
$stmt->bind_result($id);
while($stmt->fetch()){
echo"ID: {$id}<br>";
}
}
$data2=new DBA();
$stmt=$data2->dbh->prepare("SELECT id FROM regger_scripts WHERE script_name=?");
$stmt->bind_param("s", $b);
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0){
$stmt->bind_result($id);
while($stmt->fetch()){
echo"ID: {$id}<br>";
}
}
if($data === $data2){
echo"Das selbe Objekt!<br>";
}else{
echo"Nicht das selbe Objekt!<br>";
}
$end2=microtime(true);
$zeit2=$end2-$start2;
echo"Laufzeit: {$zeit2} Sekunden!<br>";
?>
Wie gesagt, ich lerne hier erst und war daher mit den Messwerten ein wenig überfordert bzw. etwas verblüfft:
Datenbankverbindung steht!
ID: 10
ID: 15
Das selbe Objekt!
Laufzeit: 0.010672092437744 Sekunden!
Datenbankverbindung steht!
ID: 10
Datenbankverbindung steht!
ID: 15
Nicht das selbe Objekt!
Laufzeit: 0.021194934844971 Sekunden!
In einigen Messungen machte das sogar noch einen größeren Unterschied...
Nun die Frage - kann ich also davon ausgehen, dass mir die Design Pattern immer solche fantastischen Werte erbringen? Liegt das hier am Einzelfall?
Habt Ihr denn schon Erfahrungen mit den Design Pattern? Wenn ja, würde mich eure Meinung dazu sehr interessieren!
Liebe Grüße