-
Zend_Registry::getInstance
-
Zend_Registry::get
-
Zend_Registry::getInstance
-
Zend_Registry->offsetExists
-
array_key_exists
-
Zend_Registry->offsetGet
-
Zend_Config_Ini->__get
-
Zend_Config_Ini->get
-
array_key_exists
-
Zend_Config->__get
-
Zend_Config->get
-
array_key_exists
-
Zend_Config->__isset
-
Zend_Config_Ini->__get
-
Zend_Config_Ini->get
-
array_key_exists
-
Zend_Config->__get
-
Zend_Config->get
-
array_key_exists
查看文章 |
Zend Framework 建议仔细检查你的启动(bootstrap)文件确定自己是否真的需要那么多的包含路径(include path),并确保使用频繁的路径在最前面,而不是最后(译注:PHP在找不到文件的时候,会逐个检查包含路径下是否存在该文件)。小心使用插件,不要启用项目不需要的插件。 Zend_Loader 要比 require_once快一点点虽然只快一点点,但是包含文件很多的话,就会变得很重要。如Till所言,为项目编写一个专用的xyz_Loader用于包含文件,或许也是一个很好的做法,不过这么做的收益是因项目而异的。 Zend_Db一段很优雅的代码,执行效率却可能很差。请尽量避免大数据量的查询,特别是多表连接。我们曾经遇到的一个例子是:查询结果有120多行记录,而查询的目的仅仅是获取一些字段的加和。 PHP:
这么做,你可以去掉大量对你毫无用处的冗余调用。(并且可以很方便地通过Memcache缓存这个结果)。 Zend_Controller_Router_Route尽量使用Zend_Controller_Router_Route,慎用Zend_Controller_Router_Route_Regex,你早已经知道这么做了,不是吗? Zend_Filter我们有一个UBB过滤器,用于解析用户评论中的UBB标签(如[url][/url]等)。我们自己编写了这个过滤器,但是一定要确保它尽可能的高效。如PHP文档所言,你应该尽可能的使用str_replace,请确保你一直是这么做的。 Zend_Config我们的每一个应用有一个ini配置文件,在部署的时候进行配置。在应用中,我们通过如下的方式使用其中的变量值: PHP:
这么做非常漂亮,但是每次调用$config->application->title,都需要调用array_key_exists函数,它的调用过程如下所示: TEXT:
这么做效率很低吧? PHP:
然后你就可以一直使用这个常量来代替原来的变量。 其他建议其他一些在优化代码时需要考虑的重要问题: 避免使用shell_exec千真万确,这个调用非常慢(在我们的应用中一次调用最慢时可以达到77毫秒)。如果你在程序中多次调用,会极大的拖累应用的执行效率。举个简单的例子: BASH:
它在每次调用都会占用大量资源,请尽可能的使用其它替代方案。 优化Smarty不要加载你不需要的模块! 当然,优化代码的方法还有很多。这篇文章只是告诉你如何审视你的ZF代码,以及一些常见的陷阱。每个项目各有特色,优化的效果因项目而异。如果你有更好的建议,请在评论中告诉我。 |