我有一个运行长期服务的控制器,该服务在ob_implicit_flush和ob_end_flush中输出不同的消息...
我的问题是如何将该内容刷新到树枝模板...
这是控制器:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use App\Sync\Incomming\Syncronize;
/**
* @Route("/sync")
*/
class SyncController extends AbstractController
{
private $syncronize;
public function __construct(Syncronize $syncronize)
{
$this->syncronize = $syncronize;
}
/**
* @Route("/",name="sync_index")
*/
public function index(Request $request)
{
ini_set('memory_limit', '-1');
ini_set('max_execution_time', 300);
header('X-Accel-Buffering: no');
ob_implicit_flush(true);
$this->syncronize->updateData();
ob_end_flush();
/*How can i pass this content to the twig template ?*/
return $this->render( 'sync/output.html.twig', ['message' => "" ]);
}
}
这是发送消息的工具:
namespace App\Tools;
class Message
{
static function write( string $msg, $level = 1 )
{
$levels=[
'-',
' |_',
' |_',
' |_',
' |_',
];
ob_implicit_flush(true);
echo $levels[$level] . $msg . PHP_EOL;
return ob_flush();
}
}
有什么想法吗? 谢谢...
答案 0 :(得分:0)
在索引操作中,您可以调用ob_end_flush()
ob_get_flush()
而不是调用$messages =
。
这还将停止输出缓冲,但是它将以字符串形式返回缓冲区的内容,然后您可以在树枝模板中使用它。