Autor |
Kompression Output abschalten |
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 06.09.2008 20:02
Hallo miteinander,
ich versuche gerade ein bereits bestehendes (Standalone-)Modul in OPN zu integrieren. Das Modul verwendet zum Aufbau
Ergebnisseite ein ProgressBar um den User anzuzeigen, dass die benötigten Informationen gerade aufbereitet werden.
Weiterhin wird dort gleichzeitig ein Text eingeblendet.
Wegen diesem Text kann ich die eingebaute ProgressBar nicht verwenden. Weiterhin ist in der ProgressBar ein Fortschrittsbalken eingebaut (Prozentuale Erfüllung).
Jetzt zu meinem Problem.
Da es ja in OPN integriert werden soll, muss ich den Seitenaufbau (Header, Sidemenu etc) von OPN vornehmen lassen. Und anschliessend die eigene ProgressBar einblenden.
1. Schritt: (sorry spinne, ich find das raute-icon im fck nicht)
$opnConfig["opnOutput"]->DisplayHead();
while (@ob_end_flush());
ob_start();
// Progressbar (Standard) ausschalten
echo '' . "rn";
echo '' . "rn";
echo '</script>' . "rn";
ob_flush();
flush();
Jetzt wird dann die ProgressBar eingeblendet und wieder ausgeblendet, wenn alles fertig ist.
Nachdem alles fertig ist, sollen die restlichen OPN-Elemente dargestellt werden:
$opnConfig['opnOutput']->DisplayCenterBox ('', $ergebnis);
$opnConfig["opnOutput"]->DisplayFoot();
Problem jetzt ist die Übermittlung der Daten von PHP an den Webbrowser (was als Standalone-Modul immer funktioniert hatte).
Anscheinend wird von OPN die Content-Encoding auf gzip eingestellt.
D.h. der erste Teil (DisplayHead) wird mittels gzip-Komprimierung übermittelt. Das "<script>"..."</script>" als normaler Text. Kann also nicht funktionieren.
Bei einem Test eines anderen PHP-Dokumentes auf dem gleichen Server (im Übrigen Apache) wird als Content-Encoding text/html angegeben. Somit würde ja alles richtig laufen.
Wo könnte ich in den OPN-Dateien suchen um das Modul zum Laufen zu bekommen?
Viele Grüsse
b-t-o
[ Diese Nachricht wurde bearbeitet von: b-t-o am 06.09.2008 20:29 (Originaldatum 06.09.2008 20:02) ]
|
|
spinne Registriert: 21.08.2003
Beiträge:
1902
Wohnort: Luzern
|
Geschrieben: 06.09.2008 20:18
Sali b-t-o
zum eigentlich Problem resp. Thema kann ich dir leider nichts sagen.
Aber... (sorry spinne, ich find das raute-icon im fck nicht)
naja der ist auch nicht im fck editor der ist im opn eigenen editor.
Anbei bemerkt, nutze ich den fck Editor gar nicht, weil ich ihn für nicht nötig halte, für das was man hier schreibt (ich für mein Teil zumindest)
Gruss Tine
Übe Dich in Geduld, wenn Du etwas erreichen willst
-----------------------------------------------------------------------------------------
Geheime Gedanken -- Mein Spinnennetz -- Spinnennetz CH -- RenderWorld Cinema4d
Testbereiche, nachgeschaut und dann nachgefragt:
OPN-Laborcenter --- OPN-Themes --- OPN-Bugtracking --- OPN-Doku --- OPN-FAQ
|
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 06.09.2008 20:31
Hallo Tine,
im FCK scheint es kein Icon dafür zu geben. Da er standardmässig für jeden Benutzer eingeschaltet ist, kann ich mir vorstellen, dass es mehrere User gibt (so wie ich), die dann nicht wissen, wie sie den Code eintragen sollen.
Gruss,
b-t-o
|
|
stefan Beiträge:
2435
Wohnort: Münster
|
Geschrieben: 06.09.2008 22:01
ich habe das Problem nicht ganz verstanden.
>Anscheinend wird von OPN die Content-Encoding auf gzip eingestellt.
Ja - du kannst das aber Testweise mal ausschalten in dem du in deine mainfile.php ein
$opnConfig['system_iamapuretecserver'] = true;
einfügst
dann sollte das aus sein.
aber ...
der Progressbar (Standard) ist auch im Admin - Einstellungen ausschaltbar von daher ist es eigentlich nicht nötig da noch mal mit dem js den auszuschalten?
Ich denke nicht das es was mit dem gzip tun hat; kann man aber ja probieren.
Sonst musst du noch genauer werden was dort noch passieren soll. wenn du noch ein Header (was auch immer) senden willst nach dem Head aus opn wird das nicht gehen. (ist nur eine Vermutung was du machst)
Erst nachlesen, dann nachdenken, dann nachfragen...
http://www.catb.org/~esr/faqs/smart-questions.html
openPHPnuke Developer
|
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 06.09.2008 22:21
Hallo Stefan,
ich habe Deinen Tipp mit dem mainfile.php versucht, aber anscheinend wird die Kompression noch nicht ausgeschaltet. Anbei Bildschirmkopie des HTTP-Sniffers:
Header-Statements werden nicht ausserhalb von OPN gesendt.
Gruss,
b-t-o
|
|
stefan Beiträge:
2435
Wohnort: Münster
|
Geschrieben: 06.09.2008 22:29
sicher ?
Hier vorher
Date: Sat, 06 Sep 2008 20:26:11 GMT
Server: Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.6-3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=92
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
200 OK
eintragen in mainfile.php
....
$opnConfig['system_iamapuretecserver'] = true;
((int)include($root_path.'master.php')) or die ('<br /><strong>Error: can't find master.php <br />- openPHPnuke is not correctly installed - </strong><br /><br /><br /> your root_path is set to "'.$root_path.'" but this seems that this is not ok<br />edit the /mainfile.php to set this path<br /><br /> or <br /><br />run install.php to install openPHPnuke');
?>
nachher
Date: Sat, 06 Sep 2008 20:28:20 GMT
Server: Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g
X-Powered-By: PHP/5.2.6-3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=92
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
200 OK
Hier geht es erwartunggemäss wenn das bei dir nicht geht dann hast du evt. mod_gzip aktiv in apache oder in deinen php.ini ist das eingeschaltet
Erst nachlesen, dann nachdenken, dann nachfragen...
http://www.catb.org/~esr/faqs/smart-questions.html
openPHPnuke Developer
|
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 06.09.2008 22:38
Hallo Stefan,
es geht...
ich hatte in der mainfile.php das neue Statement an das Ende der Datei eingefügt - und nicht vor dem Include der master.php.
Da ich die Kompression ja eigentlich nur in diesem einen Modul ausschalten will (daher auch kein generelles Ausschalten der Standard-ProgressBar), müsste ich es im Modul definieren.
... dieses scheint auch zu funktionieren, wenn man es vor dem Include der mainfile.php einbaut.
Danke und Gruss,
b-t-o
|
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 06.09.2008 23:02
Hallo Stefan,
noch eine Frage hierzu.
Ich muss die HTTP-Antwort ja stückchenweise übermitteln.
Apache macht dies wohl teilweise, so dass ich zumindestens das opn-logo sehe, allerdings noch kein sidemenu und keine centerbox.
Testen kann man es mit folgendem Code:
<?php
global $opnConfig;
$opnConfig['system_iamapuretecserver'] = true;
if (!defined ('_OPN_MAINFILE_INCLUDED') ) {
include ('../../mainfile.php');
}
global $opnConfig, $opnTables;
$opnConfig["opnOutput"]->DisplayHead();
while (@ob_end_flush());
ob_start();
// Progressbar (Standard) ausschalten
echo '<div id="message">Dies ist ein Test</div>';
ob_flush();
flush();
sleep(10);
echo '<script type="text/javascript">' . "rn";
echo '' . "rn";
echo '</script>' . "rn";
$opnConfig['opnOutput']->DisplayCenterBox ('', 'Hier das Ergebnis');
$opnConfig["opnOutput"]->DisplayFoot();
?>
Sobald ich allerdings gleich am Anfang ein
header('Transfer-Encoding: chunked');
einfüge, kann der InternetExplorer die Seite nicht mehr anzeigen.
Hast Du eine Idee? Muss ich vielleicht irgendwo noch eine Chunk-Size einstellen (wobei ich es nicht nachvollziehen kann, weil im Standalone-Modus lief ja alles).
Gruss,
b-t-o
|
|
stefan Beiträge:
2435
Wohnort: Münster
|
Geschrieben: 06.09.2008 23:23
Dir ist schon klar das die side-, centerboxen je nach theme auch erst bei
$opnConfig['opnOutput']->DisplayFoot();
gesand werden?
Das sleep(1) soll das die Berechnungsroutine da stellen die dann ein
1 ... 2 ... 3 ... 4 ... ausgibt?
Aber trotzdem die Boxen schon da sein soll also das Ergebnis in einer Box. Wenn ja dann musst das ganze ganz anderes machen. Das kannst dann nur mit ajax machen. Das wird bei der Suche so genutzt.
Erst nachlesen, dann nachdenken, dann nachfragen...
http://www.catb.org/~esr/faqs/smart-questions.html
openPHPnuke Developer
|
|
b-t-o
Registriert: 09.07.2008
Beiträge:
200
|
Geschrieben: 07.09.2008 12:13
Hallo Stefan,
upps... stimmt, das hatte ich übersehen...
Ich habe den Ansatz mit AJAX versucht, allerdings musste ich dort den readystate == 3 (noch in Übermittlung) abfangen, was allerdings nicht geklappt hat.
Hab mich daher kurzerhand dazu entschlossen einen Iframe einzubetten, der dann die gleiche Routine aufruft.
Gruss,
b-t-o
|
|
|
sortieren nach
|
Seite 1 2 nächste Seite |