我试图使用doctrine数据夹具从"大"CSV文件(3Mo/37000行/ 7列)插入(在mySQL数据库中)数据.
这个过程非常缓慢,此时我无法成功(可能我不得不再等一会儿).
我认为学说数据夹具不是为了管理这么多的数据?也许解决方案应该是直接将我的csv导入数据库?
知道怎么办吗?
这是代码:
<?php
namespace FBN\GuideBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use FBN\GuideBundle\Entity\CoordinatesFRCity as CoordFRCity;
class CoordinatesFRCity extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
$csv = fopen(dirname(__FILE__).'/Resources/Coordinates/CoordinatesFRCity.csv', 'r');
$i = 0;
while (!feof($csv)) {
$line = fgetcsv($csv);
$coordinatesfrcity[$i] = new CoordFRCity();
$coordinatesfrcity[$i]->setAreaPre2016($line[0]);
$coordinatesfrcity[$i]->setAreaPost2016($line[1]);
$coordinatesfrcity[$i]->setDeptNum($line[2]);
$coordinatesfrcity[$i]->setDeptName($line[3]);
$coordinatesfrcity[$i]->setdistrict($line[4]);
$coordinatesfrcity[$i]->setpostCode($line[5]);
$coordinatesfrcity[$i]->setCity($line[6]);
$manager->persist($coordinatesfrcity[$i]);
$this->addReference('coordinatesfrcity-'.$i, $coordinatesfrcity[$i]);
$i = $i + 1;
}
fclose($csv);
$manager->flush();
}
public function getOrder()
{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud) 使用Symfony 2,我正在寻找有关您可以在安全配置文件app/config/security.yml(官方文档)中定义的处理程序的更多信息.该文档未提供有关处理程序的任何信息.以下是安全文件的摘录:
# app/config/security.yml
security:
...
firewalls:
somename:
form_login:
...
# login failure redirecting options (read further below)
failure_path: /foo
failure_forward: false
failure_path_parameter: _failure_path
failure_handler: some.service.id
success_handler: some.service.id
logout:
path: /logout
target: /
invalidate_session: false
delete_cookies:
a: { path: null, domain: null }
b: { path: null, domain: null }
handlers: [some.service.id, another.service.id]
success_handler: some.service.id
anonymous: ~
Run Code Online (Sandbox Code Playgroud)
在form_login ang logout部分中都有一个success_handler字段.此外,对于注销部分,您可以使用handlers字段定义多个处理程序.
我有两个问题:
如果我定义一个succes_handler服务(使用例如AuthenticationSuccessHandlerInterface或LogoutHandlerInterface),它是否会覆盖框架中提供的默认成功处理程序?
对于注销部分的配置,该如何工作handlers …
使用Symfony2我已经实现了一个AJAX操作来管理我的应用程序中的一些书签(添加/删除).因此,用户需要进行身份验证才能继续.我有一个解决方案,将用户重定向到登录页面,但我认为最好使用事件来处理此重定向.
实际解决方案
检查用户的身份验证的方式与FOSUserBundle中的方式相同.
路由:
fbn_guide_manage_bookmark:
path: /bookmark/manage
defaults: { _controller: FBNGuideBundle:Guide:managebookmark }
options:
expose: true
requirements:
_method: POST
Run Code Online (Sandbox Code Playgroud)
控制器:
public function manageBookmarkAction(Request $request)
{
if ($request->isXmlHttpRequest()) {
$user = $this->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
return new JsonResponse(array('status' => 'login'));
}
// DO THE STUFF
}
}
Run Code Online (Sandbox Code Playgroud)
jQuery:
$(function() {
$('#bookmark').click(function() {
$.ajax({
type: 'POST',
url: Routing.generate('fbn_guide_manage_bookmark'),
data : xxxx, // SOME DATA
success: function(data) {
if (data.status == 'login') {
var redirect = Routing.generate('fos_user_security_login');
window.location.replace(redirect);
} else …Run Code Online (Sandbox Code Playgroud)