小编Jak*_*e N的帖子

处理Zend Framework的Controller插件中抛出的异常

我有一个扩展的Acl插件Zend_Controller_Plugin_Abstract,这个插件处理我所有的Acl代码.

我想在这个插件中抛出一个Exception,例如Exception_Unauthorised,然后在我的处理中ErrorController,这样我就可以为不同的应用程序使用相同的Acl插件,并使用它ErrorController来处理每个应用程序中的每个情况 - 如果需要的话.

问题是在插件中抛出异常并不会阻止原始Action执行.所以我最终得到了原始的Action输出和ErrorController输出.

如何在插件中抛出异常以阻止原始Action发生?

情况1

// This throws the `Exception_NoPermissions`, but it does not get caught by
// `ErrorController`
public function preDispatch(Zend_Controller_Request_Abstract $request)
{       
    parent::preDispatch($request);
    throw new Exception_NoPermissions("incorrect permissions");
}
Run Code Online (Sandbox Code Playgroud)

案例2

// This behaves as expected and allows me to catch my Exception
public function preDispatch(Zend_Controller_Request_Abstract $request)
{       
    parent::preDispatch($request);
    try
    {
        throw new Exception_NoPermissions("incorrect permissions");
    }
    catch(Exception_NoPermissions $e)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

案例3

我认为这是问题所在,通过更改控制器.

public function preDispatch(Zend_Controller_Request_Abstract $request)
{ …
Run Code Online (Sandbox Code Playgroud)

php plugins zend-framework exception-handling

5
推荐指数
2
解决办法
6261
查看次数

PHPUnit - 使用Zend Framework应用程序生成代码覆盖率报告时出现问题

我一直在谷歌和其他各种网站上寻找这个问题的答案几个小时没有运气.我使用PHPUnit为Zend Framework项目创建了一些单元测试.一切顺利,直到PHPUnit代码覆盖率报告的测试为止.此时我收到以下错误:

生成代码覆盖率报告,这可能需要一些时间.致命错误:在第32行的C:\ htdocs\ZendFWTutorials\ZendStorefront\library\SF\Plugin\Action.php中的非对象上调用成员函数pushStack()

此错误引用以下代码块:

public function
dispatchLoopStartup(Zend_Controller_Request_Abstract $request) 
{
     $stack = $this->getStack();

     // category menu
     $categoryRequest = new Zend_Controller_Request_Simple();
     $categoryRequest->setControllerName('category')
                     ->setActionName('index')
                     ->setParam('responseSegment', 'categoryMain');


     // push requests into the stack
     $stack->pushStack($categoryRequest);
 }

 public function getStack()
 {
     if (null === $this->_stack) {
         $front = Zend_Controller_Front::getInstance();
         if (!$front->hasPlugin('Zend_Controller_Plugin_ActionStack'))
         {
             $stack = new Zend_Controller_Plugin_ActionStack();
             $front->registerPlugin($stack);
         } else {
             $stack = $front->getPlugin('ActionStack');
         }
         $this->_stack = $stack;

     }
     return $this->_stack;
 }
Run Code Online (Sandbox Code Playgroud)

这段代码来自我没有编写的库,因此可能会增加我的问题的复杂性,因为我不太可能理解发生了什么.我还不知道PHPUnit逻辑在创建代码覆盖率报告时正在做什么,所以我不知道如何解决问题.这个问题只发生在我运行PHPUnit并运行xdebug以在正常操作条件下跟踪此函数中的代码时.我有一种感觉,PHPUnit进入一个变量为null但在正常操作中$ stack和$ categoryRequest不为空的情况.

我的目录结构如下:

application
-----> bootstrap
-----> config
-----> layouts
-----> modules
--------> …

php phpunit unit-testing zend-framework

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

PHP MySQL批量运行查询

我是处理大量数据的新手。我想知道批量查询数据库时是否有任何最佳实践,或者是否有人可以提供任何建议。

我有一个查询将提取所有数据,并使用 PHP 将数据写入 XML 文件。数据可能在 10 到 500,000 行之间,因此我编写了脚本以 50 行为一组提取数据,写入文件,然后获取接下来的 50 行,将其附加到文件等。这样可以吗?或者我应该做点别的事情?我可以增加批处理大小还是应该减少它以使脚本运行得更快?

任何建议将不胜感激。

php mysql batch-processing

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

PURGE 在 Varnish 缓存中失败

我正在使用以下代码清除网站的主页:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.mysite.com:8080/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 1000);

$r = curl_exec($ch);

echo "<PRE>$r</PRE>";

curl_close($ch);
Run Code Online (Sandbox Code Playgroud)

Varnish 的响应符合预期:

HTTP/1.1 200 Purged.
Server: Varnish
Content-Type: text/html; charset=utf-8
Retry-After: 5
Content-Length: 382
Accept-Ranges: bytes
Date: Fri, 10 Aug 2012 10:50:56 GMT
X-Varnish: 617777456
Age: 0
Via: 1.1 varnish
Connection: close
X-Cache: MISS
Run Code Online (Sandbox Code Playgroud)

所以现在我认为它被清除了,但是进一步调用页面以检查标题表明它没有被清除。AsAge: 15X-Cache: HIT都设置了,这表明该页面仍在缓存中并且已经存在 15 秒。

TTL 为 120。

我错过了什么吗?

谢谢杰克

php caching varnish

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

Symfony 2中的模板部分

在Symfony 2中是否存在部分内容,从任何地方都可以重复使用模板?

我找到了include http://twig.sensiolabs.org/doc/tags/include.html,但这只允许在特定的目录结构中呈现模板.

我真的想要一个包含所有部分模板的文件夹,而不是将它们集中到我的主视图中?

所以我希望能够做类似的事情

{% include "Bundle:Default:Partials:view.html.twig" %}
Run Code Online (Sandbox Code Playgroud)

更新

我不想使用强制结构Bundle:Controller:Template结构.我不想使用它,因为它意味着将我的所有模板部分放入我的主视图模板中.我需要能让我这样做的东西Bundle:Controller:PartialDir:Template

templates partials symfony twig

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

在$ scope update上防止AngularJs内容闪烁

当我$scope在控制器中更新我的喜欢时

$scope.item = "Hello";
Run Code Online (Sandbox Code Playgroud)

然后整个DOM item似乎被删除,然后再次添加.这似乎很好,但如果我有一个列表items和做

$scope.items = Resource.query(); 
Run Code Online (Sandbox Code Playgroud)

要更新所有项目,然后items删除所有DOM ,然后重新添加,这看起来很破碎和笨拙 - 无论如何还有这个删除,然后在$scope更新时添加DOM元素?

如果将$scope.items其子项用于多个ng-repeat语句中,因为所有这些ng-repeat部分都被删除然后重新添加,则此问题会进一步恶化.

编辑

我已经读过这个并觉得这是问题https://www.binpress.com/tutorial/speeding-up-angular-js-with-simple-optimizations/135

我有这么多"东西"进行的$digest只是缓慢.我正在研究一个例子,但同时想象一下这个数据的尝试

{
    {
        id: 1, 
        name: "name1", 
        something: {
            id: 10,
            name: "something10"
            else: {
                id: 15,
                name: "else15"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是有20个这样的对象都有嵌套对象 - 这似乎是个问题.有很多对象被解析并绑定到DOM,$watchers只需要很长时间就可以完成所有事情.

编辑2

我做了这个演示,也许我使用资源错了?http://plnkr.co/edit/QOickL0Dyi8jmuvG9mzN

但是这些物品每5秒更换一次,更换后它们全部消失然后重新出现.这是我遇到的问题.

angularjs angularjs-scope

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

从数组中获取对象值 - NodeJs

我有这个对象数组

[ { id: '573267d06b2957ab24c54d59' },
  { id: '573267d06b2957ab24c54d5a' },
  { id: '573267d06b2957ab24c54d5b' },
  { id: '573267d06b2957ab24c54d5c' },
  { id: '573267d06b2957ab24c54d5d' } 
]
Run Code Online (Sandbox Code Playgroud)

我希望在 NodeJs 中将其转换为以下内容

[ '573267d06b2957ab24c54d59',
  '573267d06b2957ab24c54d5a',
  '573267d06b2957ab24c54d5b',
  '573267d06b2957ab24c54d5c',
  '573267d06b2957ab24c54d5d'
]
Run Code Online (Sandbox Code Playgroud)

考虑到正确的库/包,这似乎应该很容易,但我正在努力寻找正确的措辞将数组“展平”为包含对象的 ID。

javascript arrays node.js

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

Symfony3 Docs WSSE 失败“如果尚未配置任何参数,则无法替换参数”

按照此

http://symfony.com/doc/current/security/custom_authentication_provider.html

结果是

服务“security.authentication.provider.wsse.wsse_secured”:如果尚未配置参数,则无法替换参数。

我在任何地方都找不到有关此错误的任何信息。这使用了文档的 WSSE 代码,但它失败了。

这个 repo 显示它失败了https://github.com/jakenoble/wsse_test

我想让它最终与 FOS 用户包一起工作。但是我不能让它与基本的 Symfony3 安装一起工作,所以 FOS User Bundle 目前是不可能的。

挖了一点...

有在元件的一个ARGindex_0上类Symfony\Component\DependencyInjection\ChildDefinition在元件为arg的对象index_0具有一个id fos_user.user_provider.username_email

然后替换调用尝试获取 的参数fos_user.user_provider.username_email,但没有。然后出现错误。

有任何想法吗?

symfony wsse

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

Windows XP - 如果崩溃,则监视进程和重新启动进程

这是我的第一个Windows问题,如果这是明显的或措辞不好,请道歉.

我有一个触摸屏工作站在Kisokmode(http://www.opera.com/support/mastering/kiosk/)运行Opera,它很棒,工作得很好.

我希望能够监视Opera进程并在崩溃或关闭时重新启动它.

任何人都可以就如何做到这一点给我一些指导,或者是否有任何开箱即用的软件可以为我做到这一点?

windows opera monitoring touchscreen process

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

Symfony3工厂即服务

我一直试图解决这个问题

http://symfony.com/doc/current/service_container/factories.html

但是似乎有一块缺失让所有人都厌倦了或者我完全忽略了这一点.

该示例具有工厂类

class NewsletterManagerFactory
{
    public static function createNewsletterManager()
    {
        $newsletterManager = new NewsletterManager();

        // ...

        return $newsletterManager;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后通过服务将该工厂配置为工厂类和NewsletterManager服务方法.

services:
    app.newsletter_manager_factory:
        class: AppBundle\Email\NewsletterManagerFactory

    app.newsletter_manager:
        class:   AppBundle\Email\NewsletterManager
        factory: 'app.newsletter_manager_factory:createNewsletterManager'
Run Code Online (Sandbox Code Playgroud)

所以现在我们有一个通过param NewsletterManager知道NewsletterManagerFactoryClass的Classfactory:services.yml

你如何利用这种配置?现在暴露在内的NewsletterManager是什么让我可以createNewsletterManager在工厂上课?

据我所知,这两项服务仍然是完全分开的?

service factory-pattern symfony

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