Mysql abfrage und php script optimieren!

QUOTE (Joel Janser @ Mo 16.1.2006, 8:48)Eher im Stil von:

CODE
echo '<html>';
echo ' inhalt inhalt inhalt';
echo '</html';
// ausgabe fertig

//auswertung findet statt:
do_auswertung( $ip );
log_access( $ip );
.. etc etc.
"insert into statistiken set user=$bla ........";


Und er will wahrscheinlich, dass nach dem "auswertung findet statt" beim Browser nicht mehr im "Laden" zustand ist sondern die Übertragung zum Browser abgeschlossen wird und nur noch auswertungs-code ausgeführt wird.

*ich das so verstehe*

Greets,
Joel

Versuch's mal mit ob_end_flush an dem Punkt, wo die Seite fertig angezeigt werden soll.
Danach kannst du allerdings keine Headerinformationen mehr setzen.

Falls das nicht klappt:
php-manual Funktionen zur Ausgabesteuerung

Gruss

Tümmel
 
Hi,
danke für deine Hilfe aber das bringt irgendwie rein garnix!

QUOTE Versuch's mal mit ob_end_flush an dem Punkt, wo die Seite fertig angezeigt werden soll.
Danach kannst du allerdings keine Headerinformationen mehr setzen.

Falls das nicht klappt:
php-manual Funktionen zur Ausgabesteuerung


Was soll ich bei dem Link finden? Erkenne dort nichts was das problem lösen würde? Please help
tongue.gif


MFG
 
So wie ich das verstanden habe willst du den php-Ausgabepuffer leeren,
bevor der code abgearbeitet ist.

Wenn es nix bringt, war dein Puffer sowieso schon voll und musste zwangsentladen werden oder du hast nicht den richtigen Ausgabestartpunkt gewählt. Dort wo die Seite fertig geschrieben ist und angezeigt werden soll.
Andernfalls zwingst man php damit den Ausgabepuffer zu entleeren und freizugeben.
dry.gif


Geht übrigens auch mit javascript:
response.flush()
tongue.gif
 
Ich weiß nicht wie das heißt? Ich wollte halt gerne das php im Hintergrund weiter arbeitet aber der User davon nicht mehr soviel mitbekommt! Das heißt es soll kein Ladebalken mehr angezeigt werden. Aber ich habe das mit flush noch mal probiert aber das haut damit nicht hin. Aber danke für deinen Tip!


QUOTE (Sascha Ahlers @ Mo 16.1.2006, 21:11)[...] ich würde zumindestes bei so einen Vorhaben komplett anders an die Sache herangehen. [...]


Hi Sascha,

mich würden hier deine Gedanke sehr Interessieren. Vieleicht findest du ja noch einmal Zeit und kannst Sie mir hier im Beitrag oder per PM mitteilen. Ich wäre dir sehr dankbar.

MFG
 
Hallo Borsti,


ich habe wohl eine Rudimentäre Überlegung gemacht aufgrund Deiner Daten, doch würde ich wohl das ganze komplett neu anlegen. Da ich bisher immer noch nicht den genauen Rahmen kenne, kann ich natürlich auch nichts sehr gutes abliefern, haber hier mal kurz meine Überlegungen.

CODE keywords (MyISAM)
+----+------------+---------+
| id | anzeige_id | keyword |
| -- | - - - - -  | -  -  - |
+----+------------+---------+
-- PRIMARY KEY (id), KEY (anzeigeid), INDEX (keyword(10))


keywords_anzeige (MyISAM)
+------------+------------+
| anzeige_id | keyword_id |
+------------+------------+
-- PRIMARY KEY (anzeigen_id, keyword_id)


anzeige (MyISAM, ggf. InnoDB)
+----+---------+---------+--------------+----------+------+-
| id | user_id | anzeige | ueberschrift | linktext | link |
| -- | - - - - |         |              |          |      |
+----+---------+---------+--------------+----------+------+-
-+-----+--------+--------+-------+
.| art | kosten | breite | hoehe |
.|     |        |        |       |
-+-----+--------+--------+-------+
-- PRIMARY KEY (id), KEY user_id (user_id)


users (MyISAM)
+----+----------+----------+---------+---------+----------+-
| id | UserName | UserPass | zuletzt | vorname | nachname |
| -- | -  -  -  |          |         |         |          |
+----+----------+----------+---------+---------+----------+-
-+---------+-----+-----+------+---------+-------+
.| strasse | plz | ort | land | telefon | firma |
.|         |     |     |      |         |       |
-+---------+-----+-----+------+---------+-------+
-- PRIMARY KEY (id), INDEX (UserName(10))


zahlungsdaten (InnoDB)
+-----+---------+-------------+--------+-------+-------+
| blz | user_id | kontonummer | paypal | pgeld | ageld |
| --- | - - - - |             |  ? ? ? | ? ? ? | ? ? ? |
+-----+---------+-------------+--------+-------+-------+
-- PRIMARY KEY (user_id), KEY (blz)


bankname (MyISAM)
+-----+----------+
| blz | bankname |
| --- |          |
+-----+----------+
-- PRIMARY KEY (blz)


session (MEMORY)
+---------+-------------+--------+
| user_id | UserSession | expire |
| ------- |             |        |
+---------+-------------+--------+
-- PRIMARY KEY(user_id)

Gebenenfalls würde ich die Anzeigen auch noch als InnoDB ausbauen, so dass die Einträge nur eingetragen werden, wenn auch bezahlt wurde. Bei den Feldern mit den Fragezeichen drunter, weiß ich nicht, wozu diese ganz genau gut sein sollen.


Beziehungen:

CODE anzeigen --- n,m --- keywords
 |
 |
 |
0,n
 |
 |
 |
users --- 1,0 --- session
 |
 |
 |
1,1
 |
 |
 |
zahlungsdaten --- n,1 --- bankname


Wie gesagt, richtig optimieren kann man es erst, wenn man das entsprechende Projekt genau kennt und es werden wohl später noch Änderungen vorgenommen werden müssen.


<edit>
Nochmal eine kleine Verbesserung, woran ich vorher nicht so gedacht habe. Eine n,m Beziehung reduziert die größe der Keyword-Tabelle. Wenn es geht, würde ich ggf. speziell auf die Tabelle "keywords_anzeige" einen weiteren INDEX alleine auf keyword_id anlegen.
Vielleicht ist es aber auch sinnvoller das Feld Keyword einfach als Textfeld zu benennen und dort alle Keywords zu speichern. Dieses Feld dann mit einen Vollindex auszustatten und mit Match-Against nach passenden Wörtern zu suchen, inklusive einer entsprechenden Relevanz.
</edit>



MfG Sascha Ahlers
 
Hallo,

Jetzt war ich mit dem gleichen Prob beschäftigt.

Für eine partiellen Ausgabe muss du folgenden Code benutzen:

CODE
//schauen ob ein buffer ständig neu initialisiert wird
if (ob_get_level() == 0) ob_start();

//putput schreiben
echo $output;

//output aus dem buffer schreiben
flush();
ob_flush();
//schreiben beenden

//buffer output beenden
ob_end_flush();

//dem parser ein bisschen Luft geben
// fiunktioniert manchmal auch ohne oder mit mikrotime (php5)
sleep(1);

//Eventuell ist der Buffer für gosse Ausgaben zu klein.
//Dann kann man ihn vorweg mit
//str_pad($output,4096);
//vergrössern. Da hab ich mich mangels Bedarf aber noch nicht schlau gemacht.
//sonst für den nächsten output das ganze wiederholen:

if (ob_get_level() == 0)ob_start();
print '<div class="percents">etwas output</div>';
$stroutput ='mehr output';
$stroutput .='noch mehr output';
echo $stroutput;
flush();
ob_flush();
ob_end_flush();
sleep(1);




Weiterführende Erkärungen findest du unter den o.g. links.

Gruss

Tümmel
 
Zurück
Oben