Commit 5accbeef authored by Etienne CHAMPETIER's avatar Etienne CHAMPETIER

ZP-797 WBXMLEncoder remove _outlog / use output buffering.

Released under the Affero GNU General Public License (AGPL) version 3.

we already buffer 1M of output, so we don't need _outlog,
which is an always on debug code
parent 40f4b10c
...@@ -45,7 +45,6 @@ ...@@ -45,7 +45,6 @@
class WBXMLEncoder extends WBXMLDefs { class WBXMLEncoder extends WBXMLDefs {
private $_dtd; private $_dtd;
private $_out; private $_out;
private $_outLog;
private $_tagcp; private $_tagcp;
private $_attrcp; private $_attrcp;
...@@ -68,7 +67,6 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -68,7 +67,6 @@ class WBXMLEncoder extends WBXMLDefs {
if (!defined('WBXML_DEBUG')) define('WBXML_DEBUG', false); if (!defined('WBXML_DEBUG')) define('WBXML_DEBUG', false);
$this->_out = $output; $this->_out = $output;
$this->_outLog = StringStreamWrapper::Open("");
$this->_tagcp = 0; $this->_tagcp = 0;
$this->_attrcp = 0; $this->_attrcp = 0;
...@@ -329,10 +327,6 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -329,10 +327,6 @@ class WBXMLEncoder extends WBXMLDefs {
$stat = fstat($stream); $stat = fstat($stream);
$logContent = sprintf("<<< written %d of %d bytes of %s data >>>", $written, $stat['size'], $asBase64 ? "base64 encoded":"plain"); $logContent = sprintf("<<< written %d of %d bytes of %s data >>>", $written, $stat['size'], $asBase64 ? "base64 encoded":"plain");
$this->logContent($logContent); $this->logContent($logContent);
// write the meta data also to the _outLog stream, WBXML_STR_I was already written by outByte() above
fwrite($this->_outLog, $logContent);
fwrite($this->_outLog, chr(0));
} }
/** /**
...@@ -356,7 +350,6 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -356,7 +350,6 @@ class WBXMLEncoder extends WBXMLDefs {
*/ */
private function outByte($byte) { private function outByte($byte) {
fwrite($this->_out, chr($byte)); fwrite($this->_out, chr($byte));
fwrite($this->_outLog, chr($byte));
} }
/** /**
...@@ -391,14 +384,6 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -391,14 +384,6 @@ class WBXMLEncoder extends WBXMLDefs {
private function outTermStr($content) { private function outTermStr($content) {
fwrite($this->_out, $content); fwrite($this->_out, $content);
fwrite($this->_out, chr(0)); fwrite($this->_out, chr(0));
// truncate data bigger than 10 KB on outLog
$l = strlen($content);
if ($l > 10240) {
$content = substr($content, 0, 5120) . sprintf("...<data with total %d bytes truncated>...", $l) . substr($content, -5120);
}
fwrite($this->_outLog, $content);
fwrite($this->_outLog, chr(0));
} }
/** /**
...@@ -564,14 +549,11 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -564,14 +549,11 @@ class WBXMLEncoder extends WBXMLDefs {
fwrite($this->_out, $data); fwrite($this->_out, $data);
fwrite($this->_out, $buffer); fwrite($this->_out, $buffer);
fwrite($this->_outLog, $data);
fwrite($this->_outLog, $buffer);
foreach($this->bodyparts as $bp) { foreach($this->bodyparts as $bp) {
while (!feof($bp)) { while (!feof($bp)) {
$out = fread($bp, 4096); $out = fread($bp, 4096);
fwrite($this->_out, $out); fwrite($this->_out, $out);
fwrite($this->_outLog, $out);
} }
} }
} }
...@@ -583,11 +565,11 @@ class WBXMLEncoder extends WBXMLDefs { ...@@ -583,11 +565,11 @@ class WBXMLEncoder extends WBXMLDefs {
* @return void * @return void
*/ */
private function writeLog() { private function writeLog() {
$stat = fstat($this->_outLog); if (ob_get_length() === false) {
if ($stat['size'] < 524288) { $data = "output buffer disabled";
$data = base64_encode(stream_get_contents($this->_outLog, -1,0)); } elseif (ob_get_length() < 524288) {
} $data = base64_encode(ob_get_contents());
else { } else {
$data = "more than 512K of data"; $data = "more than 512K of data";
} }
ZLog::Write(LOGLEVEL_WBXML, "WBXML-OUT: ". $data, false); ZLog::Write(LOGLEVEL_WBXML, "WBXML-OUT: ". $data, false);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment