首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对高流量优化ZF2

针对高流量优化ZF2
EN

Stack Overflow用户
提问于 2013-02-03 07:22:16
回答 5查看 15.4K关注 0票数 31

当超过3个用户同时使用时,我的ZF2应用程序似乎非常慢。

我用xdebug和webgrind分析我的代码,我的函数似乎都很慢,所以这一定是zf2本身的一个优化问题。

对于缓存,我使用了EvanDotPro的EdpSuperluminal模块,这似乎可以提高应用程序的性能。

我们使用了nginx反向代理,但也没有任何意义。

我需要一些好的建议,以增加高流量的反应。我同时谈到了30+连接的用户。

EN

回答 5

Stack Overflow用户

发布于 2013-02-03 20:28:10

有几个非常简单的步骤就可以实现更快的应用程序。有三件事总是可以考虑的。

  1. ZF2 Performance QuickTipp #1 - ViewModels始终手动指定要渲染的完全限定脚本。这将略微提高性能。它是这样做的:

public function someAction() { $viewModel = new ViewModel();$viewModel->setTemplate('MODULE / CONTROLLER / ACTION.phtml');//在这个给定的示例中:$viewModel->setTemplate('foo/bar/some.phtml');//执行其他一些控制器逻辑,用于返回$viewModel->setVariables(数组(//键-值-配对视图-变量));}

  • ZF2 Performance QuickTipp #2 - Classmap Autoloading这可能是加速应用程序的最重要的部分之一。就我个人而言,我已经看到LoadingTimes增长了40%。实现它非常简单:

类模块{公共函数getAutoloaderConfig() {返回数组( 'Zend\Loader\ClassMapAutoloader‘=>数组( __DIR__ .'/autoload_classmap.php',),);}}

这样,autoload_classmap.php就是一个简单的'FQ-CLASSNAME' => 'FQ-FILEPATH'数组。这可以很容易地实现自动化,using the classmap_generator-utility of ZF2

  • ZF2 Performance QuickTipp #3 --保持Module.php轻量级!遗憾的是,这篇文章我还没来得及写。Module.php是在每次请求时加载的文件。很多人忘记了这一点,并在其中编写了大量的工厂。在某种程度上,ZfcUser-Module.php是一个不应该做的例子。闭包或匿名函数也会在每个请求上执行。如果在整个项目中有太多的人,这是相当多的工作要做。一种更好的方法是简单地编写Factory-Classes.ZfcUser后来updated Module.php使用此策略。

这就是一个人可以做的所有简单的事情(我知道-我知道的不多!:D)。然而,有趣的是,开始使用3个用户时,您的应用程序运行速度很慢。根据我的经验,这与脚本本身无关,而是服务器问题。这是来自登台机器还是本地机器?

票数 43
EN

Stack Overflow用户

发布于 2013-05-12 02:42:32

如果你正在使用Doctrine,别忘了为注解添加一个缓存。这极大地提高了性能(当我激活这个缓存时,我几乎将加载时间除以2)。如果您使用的是DoctrineORMModule:

代码语言:javascript
复制
'doctrine' => array(
    'driver' => array(

        'cache' => array(
            'class' => 'Doctrine\Common\Cache\ApcCache'
        ),

        'configuration' => array(
            'orm_default' => array(
                'metadata_cache' => 'apc',
                'query_cache'    => 'apc',
                'result_cache'   => 'apc'
            )
        ),
    )
)

但是,这在开发时非常不方便,因为每当映射发生更改时,您都必须清除缓存。

票数 29
EN

Stack Overflow用户

发布于 2013-02-09 00:25:47

如果你有一个大项目,ZF2类映射生成器会给你一个很大的提升:

http://framework.zend.com/manual/2.0/en/modules/zend.loader.classmap-generator.html

或者,如果您正在使用composer (您应该这样做),那么您也可以使用composer为您的所有模块和依赖项生成类映射,这甚至更好:

代码语言:javascript
复制
php composer.phar install --optimize-autoloader

php composer.phar update --optimize-autoloader
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14667621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档