我对Laravel 5的疑问:是否真的可以进行实时页面,在那里我可以运行laravel命令并在该页面上显示该命令的进度?
例如:我们有60k行的搜索索引,我们需要重建那个索引,在laravel命令中我们可以用循环来完成它,在每次迭代的edn中我们可以在命令行中显示进度条。
但如何在浏览器页面中显示它? laravel 5有一些套餐吗?或其他解决方案?
也许有人知道一些解决方案如何从命令中检索答案并且不要停止它,所以命令会运行异步?
感谢。
答案 0 :(得分:1)
我能想到的最简单的方法是将命令进度存储在像memcache或redis这样的缓存中,然后让前端查询缓存该进度的密钥。
命令/后端:
$cache = new Memcache;
$cache->addServer('localhost', 'port');
foreach ($records as $key => $index) {
$your_index->index($index);
$cache->set('command_progress', ($key / count($records)) * 100);
}
前端:
$cache = new Memcache;
$cache->addServer('localhost', 'port');
$percentage = $cache->get('command_progress') ? : 0;
var_dump($percentage);
将前端代码放在ajax脚本中并继续轮询直到达到100%。