rot*_*erd 4 php parsing background symfony
我用PHP编写了一个带有Symfony2的Web应用程序.用户可以上载包含保存到数据库的数据的CSV文件.解析CSV文件的每一行大约持续0.2秒,因为我向Google Maps API提出了一些请求.
因此,当您上传包含5000行的CSV文件时,这在我的应用程序中是一个实际情况,解析整个文件可能需要16分钟.
我不希望用户必须等待16分钟,直到他可以继续使用我的应用程序.所以我的问题是:如何在后台解析CSV文件,以便用户可以继续浏览?
您可以创建一个kernel.terminate事件监听器并在那里进行解析.响应发送到浏览器后会触发此事件.样本实施将是,
服务申报,
//services.yml
csv_parse_listener:
class: FQCN\Of\CsvParseListener
tags:
- { name: kernel.event_listener, event: kernel.terminate, method: onKernelTerminate }
Run Code Online (Sandbox Code Playgroud)
听众课,
namespace Your\namespace;
use Symfony\Component\HttpKernel\Event\PostResponseEvent;
class CsvParseListener
{
public function onKernelTerminate(PostResponseEvent $event)
{
$request = $event->getRequest();
if($request->get('_route') !== "Your_route"){
return;
}
$csvFile = $request->files->get('file_field_name');
//move file using $csvFile->move()
//read and parse
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2591 次 |
| 最近记录: |