- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经在我的网络服务器上安装了 ZendSkelletonApp,它使用 php-fpm(5.5+,因此启用了 opcache)和 apache 运行。
但是,对于开箱即用的示例应用程序,响应时间是 110 毫秒,这对我来说似乎很长。 “静态”php 文件在 ~30 毫秒内提供。我并不是说这应该可以通过 php 框架循环通过监听器和诸如此类的东西,但是提供静态 Controller 和模板的时间 > 100ms 真的很慢。
即使生成类映射和模板映射 (http://akrabat.com/zend-framework-2/using-zendloaderautoloader/) 并在 application.config.php 中启用模块和配置缓存,我也无法低于 100 毫秒标记。
是否有任何其他方法可以提高 zf2 的性能?
最佳答案
ZF2,由于其性质,每个请求都有很多文件 IO。从数据库加载数据集并显示结果的单个页面加载请求可能会导致打开大约 200 个 php 文件。 (运行 xdebug 缓存研磨,您可以看到检查和打开文件花费了多少时间。它可能是大量的。)
大多数打开的内容都是“小的”,一旦从磁盘读取后执行速度非常快,但实际的文件 io 本身会导致严重的延迟。
在生产中使用 ZF2 应用程序需要做的几件事:
1) 运行“composer dump-autoload -o”,这将为供应商目录缓存完整的自动加载映射。这使得自动加载系统不必在包含所需文件之前运行“file_exists()”。
2) 为您的项目本身生成一个自动加载类映射,并确保项目配置为使用它。
3) 确保您已在配置中设置模板映射,这样 ZF2 就不必“假设”模板的位置,这会导致磁盘 IO。
4) 确保您有适当的操作码缓存解决方案,例如 Zend Opcache 或 APC(取决于您的 PHP 版本)。你会希望它设置有一个中期缓存超时(一个小时或更长时间),并且文件统计应该在生产中被禁用。每次部署代码时都应该硬清除此缓存(可以通过 apache 重启、脚本等来完成)。
5) 如果你使用任何依赖注解的东西,比如 Doctrine 等,你必须确保注解被缓存。 APC 是一个很好的解决方案,但即使是文件缓存也比没有缓存要好得多。解析这些注释非常昂贵。
这种组合为我带来了 ZF2 的“即时”页面加载。
在显影时,不要出太多汗。如果需要,请安装操作码缓存,但要确保它会统计文件以检查它们是否已更改...否则它会忽略您对文件所做的更改。
关于php - ZendFramework 2 - 慢得令人痛苦?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095868/
我正在尝试轻松记录所有应用程序错误。 ZendFramework 是否有可以执行此操作的插件,或者它可以在本地执行此操作? 最佳答案 输入你的配置: phpSettings.log_errors =
我想让这个问题成为那些对 ZendFramework 感兴趣的人的指南与其他库/框架的集成。在 StackOverflow 上搜索并没有给出关于该主题的广泛 View 。 问题是:您在当前基于 ZF
我的问题很简单: How do I add an API and/or 3rd party library to my ZendFramework application in a way which
我已经在 ubuntu 上安装了 zend 框架,并且安装正确。但现在我想更改 php.ini include_path 但我不知道我的 zend 框架库在我的 ubuntu 系统中的位置,我怎么知道
我使用的是 ZendFramework 2 和 TableGateway,它们适用于普通的选择语句。但我似乎无法找到如何使用 ZendFramework 2 select 获得列的最大值。我的选择应该
在./config/application.config.php return array( 'modules' => array( 'Application',
我有一个使用 ZendFramework 的非常大的 Web 应用程序。某处的SQL语句似乎有语法错误(很多东西是自动生成的),但记录的错误非常无用(项目信息已删除) Uncaught excepti
我一直在关注文件上传的 ZendFramework 文档: http://framework.zend.com/manual/2.1/en/modules/zend.form.file-upload.
我已经在我的网络服务器上安装了 ZendSkelletonApp,它使用 php-fpm(5.5+,因此启用了 opcache)和 apache 运行。 但是,对于开箱即用的示例应用程序,响应时间是
我正在尝试通过行的主键访问 fetchAll 调用(返回 Zend_Db_Table_Rowset_Abstract)的行。 我想知道除了遍历并找到所需的行之外,最简单的方法是什么。 最佳答案 如果我
我在我的本地主机上使用 composer 安装了 zend 框架。我使用 xampp 的内置 php 服务器来部署我的 zendframework 应用程序。安装后有错误日志“compact(): U
我是 Zend Framework 2 的新手,想知道是否有一种全局方式来设置日期默认时区。 我知道我应该能够添加代码: date_default_timezone_set("UTC"); 但是我已经
在 Zendframework-1 中,我们通常将自定义代码保存在 library 文件夹下(与 application 文件夹平行)几乎使用与 zend 框架(供应商)库相同的文件夹结构来创建插件或
我正在使用 ZendFramework 和 PHP,我想设置和获取一个变量作为全局变量。 IE。我将其设置在 Zend Controller 的类中,并访问该类中的任何操作。 例如: EMAIL 获取
我有一个包含字段 id、标识符、名称的 pgsql 表。 id serial NOT NULL, identifier character varying(16), name charac
我在 ZendFramework 中的 MYSQL 查询遇到一些问题,我想获得过去 24 小时内的平均调用持续时间并进行如下查询: SELECT AVG(duration) FROM table1 w
您好,我想将 schemadb 与 ZendFramework 集成,以便在更改 Zend 模型时执行自动数据库模式调整 https://sourceforge.net/p/schemadb/wiki
如果我使用方法,例如在 ZF 中插入、更新我会安全吗(mysql 注入(inject))? 例如部分代码: $data = array( 'au
我想在对象数组上应用 Zend_Filter_StripTags $my_result = $obj->listdata(calling select query from model) 返回的数组是
我需要将一些表单元素放入表格中。我有一个问题,我的 HtmlTag 装饰器只包装了我的输入字段而不是标签,即使我更改了添加装饰器的顺序也是如此。标签突出标签。有什么建议吗?
我是一名优秀的程序员,十分优秀!