我编写了一个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) 我尝试在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中获得类似的内容输入?
提前致谢.
和朋友一起,我们想在3D等距游戏或2D中开发html5画布视频游戏.
经过一番研究后我发现了这个:http://canvasengine.net.
它似乎清晰,简单,有记录......
你怎么看待这个lib?你有另一个lib推荐?
我有一个 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)
提前致谢。
我已经安装了 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) 我打算将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) symfony ×3
doctrine-orm ×2
phpunit ×2
3d ×1
canvas ×1
dql ×1
external ×1
fixtures ×1
game-engine ×1
html5 ×1
if-statement ×1
javascript ×1
memory-limit ×1
mysql ×1
performance ×1
php ×1
private ×1
public ×1
raw-data ×1
service ×1
symfony4 ×1
unit-of-work ×1