小编psy*_*o66的帖子

Symfony2中$ em-> clear()时未定义的索引错误

我编写了一个Symfony命令来从API导入一些数据.它的工作原理但问题是当我在数据库中插入一个大的JSON时,我的PHP内存使用量会增加.并且我的unitOfWork在每次激活导入后增加"2".

我已经取消了所有用过的对象,当你想做大量的批处理时,我已经阅读了Symfony2的文档:http://www.doctrine-project.org/blog/doctrine2-batch-processing.html

但是当我使用$em->clear()我的实体管理器时会出现此错误:

注意:未定义的索引:000000007b56ea7100000000e366c259在path-to-application\vendor\doctrine\lib\Doctrine\ORM\UnitOfWork.php第2228行中

这是我的完整代码:

 /**
 * @see Command
 */
protected function configure() {
  $this
    ->setName('ks:user:runkeepersync')
    ->setDescription('Synchroniser les activités d\'un utilisateur runkeeper')
    ->setDefinition(array(
      new InputArgument('access_token', InputArgument::REQUIRED, 'Access token'),
    ))
}

/**
 * @see Command
 */
protected function execute(InputInterface $input, OutputInterface $output) {
  $accessToken = $input->getArgument('access_token');
  $em = $this->getContainer()->get('doctrine')->getEntityManager();
  $UserHasServices = $em->getRepository('KsUserBundle:UserHasServices')->findOneByToken($accessToken);
  if (!is_object($UserHasServices) ) {
    echo "Impossible de trouver l'utilisateur qui possède le jeton ".$accessToken."";
  }
  $user    = $UserHasServices->getUser();
  $service = $UserHasServices->getService();
  echo "avant de …
Run Code Online (Sandbox Code Playgroud)

php unit-of-work memory-limit undefined-index symfony

19
推荐指数
2
解决办法
5091
查看次数

WebTestCase Phpunit发送原始数据不起作用

我尝试在PhpUnit中的WebTestCase中发送原始数据,但它不起作用:

$jsonEvent = '{
      "type": "invoice.payment_succeeded",
}';
$this->client->request(
    'POST',
    '/api/v1/stripe/webhook',
    [],
    [],
    ['CONTENT_TYPE' => 'application/json'],
    $jsonEvent
);
Run Code Online (Sandbox Code Playgroud)

我尝试获取这样的数据:

$input = file_get_contents("php://input");
var_dump($input);
Run Code Online (Sandbox Code Playgroud)

但是$input空的

不确定但是也许不可能在webtestcase中获得类似的内容输入?

提前致谢.

phpunit file-get-contents raw-data

8
推荐指数
1
解决办法
377
查看次数

找到引擎来开发2d或3d等距瓷砖的html5游戏?

和朋友一起,我们想在3D等距游戏或2D中开发html5画布视频游戏.

经过一番研究后我发现了这个:http://canvasengine.net.

它似乎清晰,简单,有记录......

你怎么看待这个lib?你有另一个lib推荐?

javascript 3d html5 canvas game-engine

5
推荐指数
1
解决办法
7322
查看次数

在 symfony 3 上的所有 phpunit 测试之前加载一次装置

我有一个 SF3 应用程序和很多功能测试。在每次测试之前,我们加载并清除所有夹具。所有测试的时间都那么长。我想只加载一次夹具,并在上次测试后截断。

这是提高功能测试速度的好方法吗?

phpunit 中是否有一种 php 方法,它在所有测试之前只启动一次?(因为setUpBeforeClass 是在每次测试之前执行的)

我的测试类中的 setUpBeforeClass 方法示例。

class SearchRegisterControllerTest extends WebTestCase
{
    /** @var Client $client */
    private $client;

    protected static $application;

    public static function setUpBeforeClass()
    {
        $kernel = static::createKernel();
        $kernel->boot();

        $em = $kernel->getContainer()->get('doctrine.orm.entity_manager');
        $schemaTool = new SchemaTool($em);
        $metadata = $em->getMetadataFactory()->getAllMetadata();

        $schemaTool->dropSchema($metadata);
        $schemaTool->createSchema($metadata);

        /** @var Client $client */
        $client = static::createClient();
        $em = $client->getContainer()->get('doctrine.orm.entity_manager');

        $loader = new Loader();

        $loader->loadFromDirectory('src/MyNameSpace/AppBundle/DataFixtures/ORM');

        $purger = new ORMPurger();
        $executor = new ORMExecutor($em, $purger);
        $executor->execute($loader->getFixtures(), true);

    }
Run Code Online (Sandbox Code Playgroud)

提前致谢。

performance phpunit fixtures symfony doctrine-orm

5
推荐指数
1
解决办法
2588
查看次数

Symfony 4 - 私人外部服务的最佳实践

我已经安装了 Symfony 4 的最新版本,它真的很棒!

但是当我们在您的控制器中使用外部私有服务时,我有一个问题,什么是更好的方法:

例如,我有一个私有的 jwt 服务管理器;我不能直接在我的控制器中调用这个服务,因为我有这个错误:

The "lexik_jwt_authentication.jwt_manager" service or alias has been removed or inlined when the container was compiled. You should either make it public, or stop using the container directly and use dependency injection instead."
Run Code Online (Sandbox Code Playgroud)

解决方案1:

我创建了一个这样的公共 JWTService:

<?php
namespace App\Service\JWT;

use FOS\UserBundle\Model\UserInterface;
use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;

/**
 * Class JwtService
 * @package App\Service\JWT
 */
class JwtService
{
    /**
     * @var $JwtManager
     */
    private $JwtManager;

    public function __construct(JWTTokenManagerInterface $JwtManager)
    {
        $this->JwtManager = $JwtManager;
    }

    /**
     * @param …
Run Code Online (Sandbox Code Playgroud)

service private external public symfony4

5
推荐指数
1
解决办法
1141
查看次数

创建自定义DQL,如IF MySQL函数,但它不起作用 - [Symfony 2]

我打算将IfFunction添加到DQL但它不起作用:

//My DQL Class
<?php

namespace Application\HappyBundle\DQL;

use Doctrine\ORM\Query\AST\Functions\FunctionNode;
use Doctrine\ORM\Query\SqlWalker;
use Doctrine\ORM\Query\Parser;
use Doctrine\ORM\Query\Lexer;

/**
 * IFFunction ::= "IF" "( "ArithmeticPrimary" , "ArithmeticPrimary" ,  "ArithmeticPrimary" )"
 */
class IFFunction extends FunctionNode
{
    // (1)
    public $firstNumericExpression = null;
    public $secondNumericExpression = null;
    public $thirdNumericExpression = null;

    public function parse(\Doctrine\ORM\Query\Parser $parser)
    {

        $parser->match(Lexer::T_IDENTIFIER); // (2)
        $parser->match(Lexer::T_OPEN_PARENTHESIS); // (3)
        $this->firstNumericExpression = $parser->ArithmeticPrimary(); // (4)
        $parser->match(Lexer::T_COMMA); // (5)
        $this->secondNumericExpression = $parser->ArithmeticPrimary(); // (6)
        $parser->match(Lexer::T_COMMA); // (5)
        //$parser->match(Lexer::T_CLOSE_PARENTHESIS); // (3)
        $this->thirdNumericExpression = $parser->ArithmeticPrimary(); …
Run Code Online (Sandbox Code Playgroud)

mysql if-statement dql symfony doctrine-orm

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