小编Ste*_*hka的帖子

在Symfony中启用CSRF的功能测试表单

在Symfony中启用CSRF保护的情况下,为测试表单创建功能测试的最佳方法是什么?

目前,我必须在每个表单提交之前添加以下代码:

  $form = new sfGuardFormSignin();
  $token = $form->getCSRFToken();
  $token_name = $form->getCSRFFieldName();
Run Code Online (Sandbox Code Playgroud)

然后我添加$ token和$ token_name来形成如下参数:

call('/login', 'POST', array (
    'signin' => 
    array (
      'username' => $username,
      'password' => $password,
      $token_name => $token,
    )))
Run Code Online (Sandbox Code Playgroud)

文档中建议的选项:

'_with_csrf' => true,
Run Code Online (Sandbox Code Playgroud)

根本不起作用.

是否有更简单的方法可以避免为每个手动测试表单添加令牌?或者有没有办法在运行测试时关闭csrf检查?

当你必须测试1-2个表单时,我上面描述的方式是可以的,但如果项目包含数十个独特的表单,则会变得很痛苦.

forms symfony1 csrf functional-testing

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

将symfony 1.4从Doctrine切换到Propel

如何正确地将新安装的Symfony 1.4框架从Doctrine(默认情况下配置为)转换为Propel?

propel doctrine symfony1

6
推荐指数
3
解决办法
4968
查看次数

没有php脚本可以在服务器上运行,而有另一个持久的php脚本在运行

我在服务器上运行了一个持久的 PHP 脚本。它video从服务器流式传输视频以标记(不要问我为什么这样做:-))。它可以运行几十分钟。

问题是,同时我想使用 AJAX 将请求发送到服务器,并且在长脚本停止之前它不会发生。

我对这个问题进行了更多调查,发现了一些奇怪的事情。

  • 在运行持久的 PHP 脚本时,我无法从同一浏览器调用任何 PHP 脚本(无论是否为 AJAX)。
  • 同时从其他浏览器服务器可以毫无问题地访问。
  • 可以毫无问题地访问非 php 资产(图像、视频)。
  • 如果视频直接从 .mp4 文件播放,则问题不存在。可以在播放视频时处理对 php 的 AJAX 请求。

我很好奇是什么导致了这个问题。从我看来,它可能是服务器和浏览器配置的组合。

我的问题是为什么会发生这种情况以及如何解决?我希望能够在同一浏览器中运行其他 PHP 脚本时向服务器发出 AJAX 请求。

这是“卡住”请求的示例。第一个请求是视频,第二个是我想发送的 AJAX,在第一个完成之前它不会去任何地方。 在此处输入图片说明

第一个完成后,第二个立即完成。 在此处输入图片说明

Web 服务器是 Apache 2。它是在 IE 和 Chrome 中复制的。

Ajax 请求仅使用普通 jQuery 的 $.ajax() 调用发送。

这里是阻塞 AJAX 请求的视频请求的请求和响应信息。

Request GET /portal/portlet/index/id/671/call/proxyVideo?entityId=1 HTTP/1.1
Accept  */*
If-Unmodified-Since Fri, 24 Apr 2015 08:18:29 GMT
If-Match    "f91b54d-514740a87ff40"
Range   bytes=360448-261207372
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Referer …
Run Code Online (Sandbox Code Playgroud)

javascript php apache ajax http

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

流式传输大型教义2查询结果以输出

在我的项目中,我有一个API调用,该调用可能会返回数万条记录。

数据应以一个块的形式返回。API设计不允许分页。

使用Doctrine 2 DQL从MySQL查询源数据,并且每个记录由几个链接对象组成。目前,查询结果约为25'000条记录。我已经优化了SQL查询。它在毫秒内运行,因此无法在此处进行优化。

现在的主要问题是水合作用。我尝试了不同类型的水合作用,但在该数量的数据上仍然花费太长时间。它还占用太多内存。

我的想法是在数据被水合后立即流化,然后在数据被流化后立即删除数据。它不会减少完成请求的时间,但会减少内存使用量,并减少响应开始之前的时间。

在每个结果行被水合后,Doctrine 2中是否有一种方法可以执行某些操作?

即,我提出了很大的要求。我会这样做,$qb->getQuery()->getResult()而Doctrine则不会合并所有数据并在每个记录被合并后返回结果,而是将数据发送到例如STDOUT并在流式传输数据后立即丢弃对象。

PS:问题不是关于如何将此类查询的输出流式传输到HTTP。我可以解决。问题是我怎样才能使教义2做我想做的事。

php mysql performance doctrine doctrine-orm

3
推荐指数
1
解决办法
843
查看次数

PHPUnit 使用注释断言异常与方法调用

在 Phpunit 中断言异常有两种方法:

  • 使用注释@expectedException
  • 使用方法调用$this->expectException()

我已经尝试过它们两个,它们工作得很好并且完全相同。

哪个是正确的方法?是否有关于应该使用哪一种的指南?

PS:当异常是基于某种条件并且并不总是发生时,显然应该使用该方法。

php phpunit unit-testing

3
推荐指数
1
解决办法
1052
查看次数