小编Sar*_*rel的帖子

强制从PHPUnit代码覆盖范围中排除文件

是否可以从PHPUnit的代码覆盖中强制排除文件夹?

我遇到的问题是,我有一个Symfony 1.4项目,其中有文件夹./lib/vendor/symfony/*.我想排除内部的任何东西./lib/vendor/*- 递归.

现在,我想排除它们是否被我的测试隐含地覆盖,即我永远不想看到这些文件夹.所以,我已将此位添加到我的phpunit.xml配置文件中,但无论我做什么,它似乎都不会排除这些文件夹:

<filter>
    <whitelist>
        <exclude>
            <directory>./lib/vendor/*</directory>
            <directory>./lib/vendor/symfony/lib/*</directory>
        </exclude>
    </whitelist>
</filter>
Run Code Online (Sandbox Code Playgroud)

在我看来,当代码被点击并且XDebug注意到它,PHPUnit将把它包含在代码覆盖中,无论如何.这方面的缺点是,这段代码已经由Symfony开发人员测试过,所以不需要将它包含在我的报告中,弄乱了我的数字:P

phpunit symfony1 code-coverage symfony-1.4

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

Twig Form Theming - form_label类属性

我一直试图覆盖form_row Twig扩展,以便我可以呈现Twitter Bootstrap样式行.twitter boostrap表格行应该如下所示:

<div class="control-group">
    <label class="control-label" for="idOfMainInput">Label Name:</label>
    <div class="controls">
        <input type="text" id="idOfMainInput" name="someDumbName">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

基本树枝div样式form_row块在此链接中定义如下:

{% block form_row %}
{% spaceless %}
    <div>
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </div>
{% endspaceless %}
{% endblock form_row %}
Run Code Online (Sandbox Code Playgroud)

所以,我的想法只是将必要的div放入,并在必要时硬编码类条目(即在主div中),但将'attr'值传递给form_label,form_errors和form_widget部分.我现在已经取出了form_errors,所以我没有深入了解它.这是我试过的:

{% form_theme form _self %}
{% block form_row %}
{% spaceless %}
<div class="control-group">
    {{ form_label(form, 'test label name', { 'attr': {'class': 'control-label'} }) }}
    <div class="controls">
    {{ form_widget(form) }}
    {{ form_errors(form) }} …
Run Code Online (Sandbox Code Playgroud)

symfony twig

10
推荐指数
1
解决办法
1万
查看次数

Symfony 2代理迭代替换Symfony 1.4项目

我们目前正在使用我们系统的Symfony 1.4实现.该系统太大,无法在Symfony 2中进行重新开发,也无法进行过夜切换 - 重新开发可能需要一年时间.我们正在考虑做的是安装一个新的Symfony 2项目,除了一个任务外,它是空白的 - 传递!

想法是你的浏览器要求example.com/products ... Symfony 2安装认识到它必须实际询问旧系统,它确实卷曲或类似的东西去问Symfony 1.4上的旧服务器相同问题,让我们说old.example.com/products ...服务器响应(标题,cookie等)由Symfony 2服务器解析并传递回浏览器.然后,浏览器并不是他实际上与"代理"交谈的明智之举.

然后我们在Symfony 2中重新开发名为"products"的模块,当我们推出时,我们只是为该模块切换代理"off".通过这种方式,我们坚持迭代开发,并且我们在开发团队(以及关于业务的过程)上使影响和学习曲线更好.

我在apache中考虑过mod_proxy,我想过要安装一个不同的代理服务器,但上面的解决方案最适合我们.

问题是,我知道Fabio已经这样​​做了,我认为这是vimeo.com(或其他一些视频网站),但我找不到任何关于如何实现这一目标的文档或教程,以及我应该集中精力研究的地方.

proxy symfony1 symfony-1.4 symfony

6
推荐指数
1
解决办法
258
查看次数

Symfony2/Doctrine使$ statement-> execute()不是"缓冲"所有值

我有一个这样的基本代码集(在控制器内):

$sql = 'select * from someLargeTable limit 1000';
$em = $this->getDoctrine()->getManager();
$conn = $em->getConnection();
$statement = $conn->prepare($sql);
$statement->execute();
Run Code Online (Sandbox Code Playgroud)

我的困难在于,当结果集只有几条记录时,内存使用情况并没有那么糟糕.我在运行$ statement-> execute()之前和之后回显了一些调试信息.部分代码,并为我的实现找到了我有以下内容:

pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 1000 memory: 50.917 MB
Run Code Online (Sandbox Code Playgroud)

将其从1000条记录中移动到10k时,MB使用率的差异将增加到13 MB

pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 10000 memory: 62.521 MB
Run Code Online (Sandbox Code Playgroud)

最终,检索大约50k记录,我接近我的最大内存分配:

pre-execute... rowCount :: 0 memory: 49.614 MB
post-execute... rowCount :: 50000 memory: 114.096 MB
Run Code Online (Sandbox Code Playgroud)

通过这种实现,我无法编写一个允许我检索数据CSV的控制器(甚至命令).当然,50k +条目听起来很多,问题就是为什么,但这不是问题.

我的最终问题是:在执行时,是否可以告诉DBAL/Connection或DBAL/Statement缓冲SQL内部的数据而不是整个PHP中的数据.例如,如果我有1000万行,只发送第一个说10k行到PHP ...让我通过@ statement-> fetch(); 当光标到达10k的末尾时,截断数组并从数据库中获取下一个10k?

pdo large-data symfony doctrine-orm dbal

3
推荐指数
2
解决办法
4439
查看次数

加入2个表(一对多)并在第二个表中获得最新条目

假设我有两个表,"users"和"audit",每次用户的状态发生变化时,触发器都会填充审计表.我正在尝试从两个表中进行选择,并获得具有关联的最新审计条目的用户条目(唯一).假设表格包含以下字段:

用户:

  • ID
  • 用户名
  • 电子邮件
  • 状态

审计:

  • id(只是一个任意的自动增量)
  • user_id(fk)
  • NEW_STATUS
  • created_at(发生这种情况的日期/时间)

因此,对于每个用户条目,有多个审计条目.

所以,最终我需要说结果(斜体部分是审计结果,非斜体是mysql结果集中行的用户部分):
1,john,john @ gmail.com ,10,5,1,10,2012-08-10-10:15:59

现在,我能看到的唯一方法是做复合选择,我做的事情如下:SELECT U.*,(SELECT*FROM audit A2其中A2.id = max(A.id))FROM users U left join audit A on(U.id = A.user_id);

问题是,如果你在用户中有数千甚至数十万个结果,你将在数据库内部进行n + 1个查询 - 这实在是效率低下.

关于如何在不使用复合SELECTS的情况下将其编写为一个SQL语句的任何想法?

mysql sql database

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