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 @@
class WBXMLEncoder extends WBXMLDefs {
private $_dtd;
private $_out;
private $_outLog;
private $_tagcp;
private $_attrcp;
......@@ -68,7 +67,6 @@ class WBXMLEncoder extends WBXMLDefs {
if (!defined('WBXML_DEBUG')) define('WBXML_DEBUG', false);
$this->_out = $output;
$this->_outLog = StringStreamWrapper::Open("");
$this->_tagcp = 0;
$this->_attrcp = 0;
......@@ -329,10 +327,6 @@ class WBXMLEncoder extends WBXMLDefs {
$stat = fstat($stream);
$logContent = sprintf("<<< written %d of %d bytes of %s data >>>", $written, $stat['size'], $asBase64 ? "base64 encoded":"plain");
$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 {
*/
private function outByte($byte) {
fwrite($this->_out, chr($byte));
fwrite($this->_outLog, chr($byte));
}
/**
......@@ -391,14 +384,6 @@ class WBXMLEncoder extends WBXMLDefs {
private function outTermStr($content) {
fwrite($this->_out, $content);
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 {
fwrite($this->_out, $data);
fwrite($this->_out, $buffer);
fwrite($this->_outLog, $data);
fwrite($this->_outLog, $buffer);
foreach($this->bodyparts as $bp) {
while (!feof($bp)) {
$out = fread($bp, 4096);
fwrite($this->_out, $out);
fwrite($this->_outLog, $out);
}
}
}
......@@ -583,11 +565,11 @@ class WBXMLEncoder extends WBXMLDefs {
* @return void
*/
private function writeLog() {
$stat = fstat($this->_outLog);
if ($stat['size'] < 524288) {
$data = base64_encode(stream_get_contents($this->_outLog, -1,0));
}
else {
if (ob_get_length() === false) {
$data = "output buffer disabled";
} elseif (ob_get_length() < 524288) {
$data = base64_encode(ob_get_contents());
} else {
$data = "more than 512K of data";
}
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