Symfony1 管理中的长脚本,Symfony中的任务?
在管理面板中,当管理员选择一个操作时,它将从API加载数据并将其保存到DB。这可能需要2秒到3分钟,这取决于他导入的内容 如何在Symfony中创建一个线程,这样管理员就不用等着完成了。完成后告诉他检查结果 这些任务是这个问题的答案吗Symfony1 管理中的长脚本,Symfony中的任务?,symfony1,admin,task,Symfony1,Admin,Task,在管理面板中,当管理员选择一个操作时,它将从API加载数据并将其保存到DB。这可能需要2秒到3分钟,这取决于他导入的内容 如何在Symfony中创建一个线程,这样管理员就不用等着完成了。完成后告诉他检查结果 这些任务是这个问题的答案吗 谢谢 不是特定于symfony,但您需要启动一些后台进程 我不熟悉symfony的命令行脚本工具,但我认为您可以使用一些东西 然后在控制器中,您需要大致如下内容(假设您在unixy主机上): 您的后台进程(在/path/to/Your/background/scr
谢谢 不是特定于symfony,但您需要启动一些后台进程 我不熟悉symfony的命令行脚本工具,但我认为您可以使用一些东西 然后在控制器中,您需要大致如下内容(假设您在unixy主机上): 您的后台进程(在/path/to/Your/background/script.php中)应该获取传递的jobId,获取作业记录,并使用任何存储的输入来运行作业。在抓取数据并将其填充到数据库中后,它应该在表中设置一个结束时间(将作业标记为完成),然后执行任何您想执行的操作来通知用户(发送电子邮件,或在messages表中插入某种行,等等)
public function executeYourBackgroundTask(){
// first, you might want to create some kind of entry in a table to keep track of jobs.
// Imagine you've got a table to keep track of this stuff
$job = new Backgroundjob();
$job->user_id = $this->getUser()->getId();
$job->starttime = time();
$job->someArgument = $someArgument; //anything the job script needs for input.
$job->save();
$jobId = $job->getId();
//start a job in the background.
exec('php /path/to/your/background/script.php ' . $jobId .' &');
//your view should just tell the user "Your job is being processed, you'll be notified when it is done"
}