[GastForen Programmierung/Entwicklung PHP und MySQL Include in while Schleife

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Include in while Schleife

Jeyenne
Beiträge gesamt: 13

8. Feb 2005, 13:05
Beitrag # 1 von 10
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich mache eine Datenbankabfrage und während der Ausgabe mit einer Schleife möchte ich einen Include einfügen. Ein Bsp:

while($array = mysql_fetch_object($result))
{
$variable1 = $array->feld1;
$variable2 = $array->feld2;
$variable3 = $array->feld3;
include("include.inc.php");
}

In "include.inc.php" steht folgendes:
<table>
<tr>
<td><?php echo $variable1; php?></td>
</tr>
</table>

Ich möchte nun gerne wissen was ihr davon haltet. Das include wird eigentlich sauber geparst und auch korrekt angezeigt. Nur nimmt mich Wunder wie wohl die Performance dadurch beeinflusst wird. Wenn ich nämlich die Datenbankabfrage mache und diese mir 30 Datensätze zurückliefert, dann wird der include ja auch 30mal vorgenommen.
- Ist das unsauber?
- würde es ev. auch mit include_once() funktionieren, damit der include nicht immer neu geladen werden muss?

Danke und Gruss
Jeyenne

(Dieser Beitrag wurde von Jeyenne am 8. Feb 2005, 13:06 geändert)
X

Include in while Schleife

Pozor
Beiträge gesamt: 892

8. Feb 2005, 14:32
Beitrag # 2 von 10
Beitrag ID: #143138
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

sauber -> nein, es ist eine Performance verschwendung jedes mal
das file zu includen. Include_once bringt auch nichts.
Wenn du es schon mit include lösen möchtest mach eine Funktion z.B:
function html_output($variable)
{
echo '<table>
<tr>
<td>'.$variable1.'</td>
</tr>
</table>';
}

und dann anstatt des include im While die funktion einsetzen und das
file vor der Schleife einfügen mit include_once.

Gruss Stefan

"KISS - KEEP IT SIMPLE, STUPID"
Ein paar Debuggingtricks:
http://www.boelsterli.biz/test/hds/debugging.php


als Antwort auf: [#143097]

Include in while Schleife

Jeyenne
Beiträge gesamt: 13

8. Feb 2005, 16:51
Beitrag # 3 von 10
Beitrag ID: #143190
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Eigentlich bin ich auch von Deiner Erklärung ausgegangen. Nur habe ich in der PHP Doku folgendes zu include gefunden:

"If the include occurs inside a function within the calling file, then all of the code contained in the called file will behave as though it had been defined inside that function."

Da while() ja eigentlich eine Funktion ist, müsste laut obenstehender Beschreibung zutreffen, dass mein include als deklariertes Element der Funktion while() nur einmal wirklich included wird. Da ich es ja innerhalb der funktion while aufrufe.
Nach weiterem Auszug aus dem Manual:

"So, it will follow the variable scope of that function."

hätte ich also auch mit dem variablenbereich kein Problem. Folglich gehe ich davon aus, dass es doch keine Performanceverschwendung ist...???


als Antwort auf: [#143097]

Include in while Schleife

oesi50
  
Beiträge gesamt: 2315

8. Feb 2005, 18:17
Beitrag # 4 von 10
Beitrag ID: #143220
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi Jeyenne,

teste es doch einfach. Mach eine while Schleife mit 10.000 oder 100.000 Durchläufen.

1. Test mit include.
2. Test mit include_once
3. Test ohne alles

Die Zeiten stoppen und vergleichen.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#143097]
(Dieser Beitrag wurde von oesi50 am 8. Feb 2005, 18:17 geändert)

Include in while Schleife

Jeyenne
Beiträge gesamt: 13

8. Feb 2005, 18:31
Beitrag # 5 von 10
Beitrag ID: #143226
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hoi,

danke.. gute Idee. Reicht die Zeit wohl um eine rauchen zu gehn? ;-)

mfg Jeyenne.

P.s: ich geb dann das Resultat bekannt.. denn wenn es so funzt wie ich denke, kann man zukünftig auf aufwändige templatesysteme verzichten :-)


als Antwort auf: [#143097]

Include in while Schleife

Pozor
Beiträge gesamt: 892

8. Feb 2005, 18:58
Beitrag # 6 von 10
Beitrag ID: #143234
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

es stimmt ja alles was du geschrieben hast, doch eines sollte klar sein:
Zugriffe auf die Festplatte sind nun mal langsam, include macht nichts
anderes als das file zu laden.

Wenn du es mit einer Funktion löst lädt es das file nur einmal (siehe oben), somit sollte es sicher schneller ablaufen.

Gruss Stefan

"KISS - KEEP IT SIMPLE, STUPID"
Ein paar Debuggingtricks:
http://www.boelsterli.biz/test/hds/debugging.php


als Antwort auf: [#143097]

Include in while Schleife

Jeyenne
Beiträge gesamt: 13

9. Feb 2005, 08:25
Beitrag # 7 von 10
Beitrag ID: #143319
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe die tests nun kurz durchgeführt:
08:10:54
1
2
.
.
.
100000
08:11:21 ->MIT include in der While Schleife hat es genau 27 Sekunden gedauert.

Und jetzt die Überraschung:
08:17:34
1
2
.
.
.
100000
08:17:38 ->OHNE include in der While Schleife dauert es nur genau 4 Sekunden.
Folglich gehe ich davon aus, dass while entweder nicht als Funktion gilt oder dass das template nicht als Teil der while Schleife deklariert wird.

Ich habe dennoch einen zusätzlichen Test durchgeführt, seht selbst:

<?php
function while_test($counter)
{
include("whiletest_template.inc.php");
}
$counter = 0;
echo date("H:i:s");
while($counter <= 99999)
{
$counter++;
while_test($counter);
}
echo date("H:i:s");
php?>
Im Template steht nichts anderes als:
<div><?php echo $counter; php?></div>

Das Resultat ist für mich ein wenig überraschend, respektive entspricht eigentlich genau dem Manual:
08:26:33
1
2
.
.
.
100000
08:27:00 ->GENAU 27 Sekunden
Folglich wird innerhalb meiner definierten Funktion der include als Teil der Funktion deklariert. Genau wie bei while().

Nun denn.. das Resultat sehe ich als ziemlich eindeutig an und werde in Zukunft keine Funktion deklarieren, in welcher ich den Include einbinde. Anhand von Performance wäre es ev. schlauer, keine includes in einer while-Schleife einzubinden, unsauber ist es aber natürlich nicht, da der include anders als angenommen als Teil der While Funktion deklariert wird. Mich nähme es jetzt nur wunder, wie so ein Beispiel mit einem Template-System aussehen würde...

Ich hoffe vielleicht jemanden zus. ein wenig geholfen zu haben.
MFG Jeyenne


als Antwort auf: [#143097]
(Dieser Beitrag wurde von Jeyenne am 9. Feb 2005, 08:30 geändert)

Include in while Schleife

oesi50
  
Beiträge gesamt: 2315

9. Feb 2005, 14:58
Beitrag # 8 von 10
Beitrag ID: #143505
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist ja alles nicht sooo schlimm.

ohne include 4 sek.
mit include 27 sek.

d.h. include verbraucht 23 sek. Bei 100000 Durchläufen entspricht das 23/100000 => 0,23 ms => 230µs. Jetzt überlege mal wie oft das include maximal aufgerufen wird, multipliziere das mit 230µs, und schaue, ob du damit leben kannst.


Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)


als Antwort auf: [#143097]

Include in while Schleife

Jeyenne
Beiträge gesamt: 13

9. Feb 2005, 15:02
Beitrag # 9 von 10
Beitrag ID: #143509
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
ja eben - sag ich ja und unsauber ist es auch nicht :)
________________________________
mfg Jeyenne


als Antwort auf: [#143097]

Include in while Schleife

Pozor
Beiträge gesamt: 892

9. Feb 2005, 20:42
Beitrag # 10 von 10
Beitrag ID: #143610
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

es ist absolut richtig, wenn man nach dem Syntax geht. Doch
unsauber ist es IMO doch, da es eine enorme Performanceverschendung ist.
Es ist einfach ein unsauberer Programmierstil.

Gruss Stefan

"KISS - KEEP IT SIMPLE, STUPID"
Ein paar Debuggingtricks:
http://www.boelsterli.biz/test/hds/debugging.php


als Antwort auf: [#143097]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022
Veranstaltungen
08.11.2022

Frankfurt, Fraport Conference Center
Dienstag, 08. Nov. 2022, 13.30 - 18.00 Uhr

Seminar

Auf der Enfocus World Tour stellen wir Ihnen gemeinsam mit Enfocus die aktuellen Highlights von Enfocus Switch und dem Impressed Workflow Server (IWS) vor. Wir präsentieren Ihnen anhand typischer Aufgabenstellungen in einem modernen Produktionsbetrieb die Möglichkeiten, die Enfocus Switch für die Automatisierung und Standardisierung von Abläufen bietet. Wir haben sowohl für Produktionsverantwortliche als auch technisch Interessierte ein spannendes Programm vorbereitet, bei dem Sie sicherlich viel Neues erfahren werden, welches Sie in Ihrem eigenen Betrieb umsetzen können. Die Veranstaltung bietet darüber hinaus eine hervorragende Möglichkeit, sich mit anderen Anwendern und Workflow-Spezialisten auszutauschen und Antworten auf konkrete Aufgabenstellungen zu erhalten, welche Sie mit Hilfe von Enfocus Switch/IWS umsetzen möchten.

Wir sind jeweils an 2 Tagen in Frankfurt, Hamburg und München vor Ort. Der erste (halbe) Tag richtet sich in erster Linie an Betriebsleiter und Produktionsverantwortliche in Druckereien - ist also weniger technisch orientiert - sondern gibt einen Überblick zu den heutigen Möglichkeiten einer automatisierten Produktion.

Der zweite Tag (Switch Anwender-Treffen) richtet sich an bestehende Switch-Anwender und Administratoren.

Anmeldung und weitere Infos: https://www.impressed.de/schulung.php?c=sDetail&sid=310

Ja

Organisator: Enfocus/Impressed

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://www.impressed.de/schulung.php?c=sDetail&sid=310

Enfocus World Tour 2022