Глупое предложение, но ... вы пытались отправить некоторые данные клиенту, после чего flush()
, прежде чем начать буферизацию вывода?Единственное другое решение, которое я могу придумать, - это избежать буфера (ов), но я могу себе представить, как это может быть довольно проблематично, как вы сказали.
Может быть, помощник, помогающий разбить буфер ...
function OBWanCallback($buffer)
{
if( OBWan::$isFinished )
{
// -- Actual callbacks go here ...
}
return $buffer;
}
OBWan::startbuffer('OBWanCallback');
[ // -- Example functionality
self::$callback = $callback;
ob_start(self::$callback);
]
// -- in some code far, far away ...
OBWan::suspendbuffer();
[ // -- Example functionality
self::$buffercache = ob_get_clean();
]
echo " ";
flush();
OBWan::resumebuffer();
[ // -- Example functionality
ob_start(self::$callback);
echo self::$buffercache;
self::$buffercache = "";
]
// -- in some code far, far away ...
OBWan::outputbuffer();
[
self::$isFinished = true;
return ob_get_clean();
]
с чем-то, что учитывает глубину буферов, которые вы внедрили, если вы реализовали глубину.