当超过3个用户同时使用时,我的ZF2应用程序似乎非常慢。
我用xdebug和webgrind分析我的代码,我的函数似乎都很慢,所以这一定是zf2本身的一个优化问题。
对于缓存,我使用了EvanDotPro的EdpSuperluminal模块,这似乎可以提高应用程序的性能。
我们使用了nginx反向代理,但也没有任何意义。
我需要一些好的建议,以增加高流量的反应。我同时谈到了30+连接的用户。
发布于 2013-02-03 20:28:10
有几个非常简单的步骤就可以实现更快的应用程序。有三件事总是可以考虑的。
public function someAction() { $viewModel = new ViewModel();$viewModel->setTemplate('MODULE / CONTROLLER / ACTION.phtml');//在这个给定的示例中:$viewModel->setTemplate('foo/bar/some.phtml');//执行其他一些控制器逻辑,用于返回$viewModel->setVariables(数组(//键-值-配对视图-变量));}
类模块{公共函数getAutoloaderConfig() {返回数组( 'Zend\Loader\ClassMapAutoloader‘=>数组( __DIR__ .'/autoload_classmap.php',),);}}
这样,autoload_classmap.php就是一个简单的'FQ-CLASSNAME' => 'FQ-FILEPATH'数组。这可以很容易地实现自动化,using the classmap_generator-utility of ZF2
Module.php是在每次请求时加载的文件。很多人忘记了这一点,并在其中编写了大量的工厂。在某种程度上,ZfcUser-Module.php是一个不应该做的例子。闭包或匿名函数也会在每个请求上执行。如果在整个项目中有太多的人,这是相当多的工作要做。一种更好的方法是简单地编写Factory-Classes.ZfcUser后来updated Module.php使用此策略。这就是一个人可以做的所有简单的事情(我知道-我知道的不多!:D)。然而,有趣的是,开始使用3个用户时,您的应用程序运行速度很慢。根据我的经验,这与脚本本身无关,而是服务器问题。这是来自登台机器还是本地机器?
发布于 2013-05-12 02:42:32
如果你正在使用Doctrine,别忘了为注解添加一个缓存。这极大地提高了性能(当我激活这个缓存时,我几乎将加载时间除以2)。如果您使用的是DoctrineORMModule:
'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'
)
),
)
)但是,这在开发时非常不方便,因为每当映射发生更改时,您都必须清除缓存。
发布于 2013-02-09 00:25:47
如果你有一个大项目,ZF2类映射生成器会给你一个很大的提升:
http://framework.zend.com/manual/2.0/en/modules/zend.loader.classmap-generator.html
或者,如果您正在使用composer (您应该这样做),那么您也可以使用composer为您的所有模块和依赖项生成类映射,这甚至更好:
php composer.phar install --optimize-autoloader
php composer.phar update --optimize-autoloaderhttps://stackoverflow.com/questions/14667621
复制相似问题