我正在开发 CakePHP 3.4 项目。
我必须执行一些命令来扫描特定目录的文件和目录。这可能需要很长时间,具体取决于目录的大小,因此我想在后台运行它并在视图中标记正在运行的标签,直到它成功执行。
如何从 Controller 在后台运行 Shell 任务并在执行时更新数据库?
我是壳牌任务的新手。
我正在开发 CakePHP 3.4 项目。
我必须执行一些命令来扫描特定目录的文件和目录。这可能需要很长时间,具体取决于目录的大小,因此我想在后台运行它并在视图中标记正在运行的标签,直到它成功执行。
如何从 Controller 在后台运行 Shell 任务并在执行时更新数据库?
我是壳牌任务的新手。
您可以从控制器调度 Shell 任务。例如,如果你想在后台运行它,你可以通过 JavaScript/Ajax 运行这个控制器动作。
// maybe this task runs looooong
set_time_limit(0);
$shell = new ShellDispatcher();
$output = $shell->run(['cake', 'bake', 'model', 'Products']);
if ($output === 0) {
$this->Flash->success('Yep!');
} else {
$this->Flash->error('Nope!');
}
但至少你确实可以用谷歌搜索这个。;-)
编辑忘记这个,去找drmonkeyninja的答案。