小编Cru*_*ruz的帖子

Symfony:Doctrine数据夹具:如何处理大型csv文件?

我试图使用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)

php mysql csv symfony doctrine-orm

9
推荐指数
1
解决办法
5480
查看次数

Symfony 2:安全配置:登录和注销处理程序

使用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字段定义多个处理程序.

我有两个问题:

  1. 如果我定义一个succes_handler服务(使用例如AuthenticationSuccessHandlerInterface或LogoutHandlerInterface),它是否会覆盖框架中提供的默认成功处理程序?

  2. 对于注销部分的配置,该如何工作handlers …

symfony

4
推荐指数
1
解决办法
4267
查看次数

Symfony2:AJAX请求:如何在需要时处理身份验证?

使用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)

authentication ajax jquery symfony

2
推荐指数
1
解决办法
4198
查看次数

标签 统计

symfony ×3

ajax ×1

authentication ×1

csv ×1

doctrine-orm ×1

jquery ×1

mysql ×1

php ×1