У меня вопрос по поводу Laravel 5: реально ли сделать страницу в реальном времени, где я могу запустить команду laravel и отобразить на этой странице ход выполнения этой команды?
Например: у нас есть поисковый индекс с 60k строками, и нам нужно перестроить этот индекс, в команде laravel мы можем сделать это с помощью цикла, а в edn каждой итерации мы можем отображать индикатор выполнения в командной строке.
Но как показать это на странице браузера? Есть ли пакеты для laravel 5? Или другие решения?
Может быть, кто-то знает некоторые решения, как получить ответ из команды и не останавливать его, поэтому команда будет работать асинхронно?
Благодарю.
Самый простой способ сделать это — сохранить прогресс команды в кеше, таком как memcache или redis, а затем запрос на внешний интерфейс, который кеширует ключ для прогресса.
Command / Backend:
$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%.
Других решений пока нет …