9

前几天我正在研究Zend Server,我想知道为什么要使用它?好的,他们说这一切都经过测试,关键任务和企业就绪等。但对我来说,这只是营销部门的谈话。

有没有人在使用这个产品,如果有,你能分享你的经验吗?也许你也可以详细说明为什么你选择这个产品用于你的应用程序的原因。

您发现使用 Zend 服务器有什么真正的好处吗?

4

6 回答 6

6

我一直在使用 Zend 平台(我知道您在询问 Zend Server,我已经到了那里)并且非常热衷于您也可以通过 Zend Server 获得的错误报告工具。

每当发生错误或抛出异常时,Zend Server 都会尽可能多地存储有关它的信息(例如正在使用的请求参数、错误发生的位置、时间、错误消息、堆栈跟踪等)。还会向您报告脚本执行缓慢。

我真的更喜欢收到这样的错误消息,而不是客户说:“该网站无法正常工作。请修复它”。

当将 Zend Server 与 Zend Studio 结合使用时,Zend Debugger 已经预先安装(但您也可以自己安装),这非常简洁。

它还带有一个 php-java-bridge(您的 java 类可以在 PHP 中使用),但我不需要这个。

如果您的 Web 应用程序中已经有了基于 php 的错误报告解决方案,或者对此没有用处,也没有使用 java 桥接器,我会说如果您使用 Zend Server 而不是自己的,它并没有真正的区别apache安装(只要你知道如何正确配置它)。

至少这是我的意见/经验。

我一直在使用 Zend 平台的开发者版,它是免费的。如果我必须为 Zend 平台/服务器付费,我认为我不会使用它。但这真的取决于项目。

于 2009-08-21T13:43:48.693 回答
4

Zend Server 不仅仅是拥有经过测试和支持的堆栈。Andre 谈到了 Zend Server 中的一项功能,即监控。监控监视您的 PHP 脚本在某些条件下的执行,如果超过某个阈值,将记录该请求的上下文,供您稍后检查。当我在现场与遇到应用程序问题的客户一起工作时,我做的第一件事就是安装 Zend Server 并打开监控。在几分钟之内,我通常至少对他们的问题有一个很好的理论。

在 Zend Server 5 中,随着代码跟踪功能的引入,该功能达到了更高的水平,该功能对在请求过程中进行的几乎每个单独的函数/方法调用进行运行时检测。它有点像在运行时完成的调试和分析的组合。在许多情况下,可以在生产环境中诊断问题而无需实际复制问题。

您还可以使用其他几个功能。Job Queue 对我来说是一个很大的任务,我非常广泛地使用它。我有一个如何使用它的示例,您是否排队?Zend 服务器作业队列简介

还有两个不同的缓存功能,PHP-Java 桥(Andre 也提到过)和 Optimizer+,它是可用的最快的操作码加速器之一。

于 2010-04-05T15:40:57.970 回答
3

当然,“测试、认证”位在某些环境中是不错的。在我们的案例中,审计要求是我们要么使用经过认证的软件堆栈,要么我们自己进行,但必须证明我们正在对输入其中的每个小组件进行快速更新。因此,出于理智的目的,我们历来使用 Linux 发行版的标准产品。问题在于它们往往落后于曲线数年。例如,大多数发行版在坚持使用 5.1 (!) 之后才采用 PHP 5.3。当您尝试开发使用现代编码技术的现代应用程序时,这是不可接受的,而且您在 PHP 性能和可靠性方面放弃了很多。

话虽如此,这些功能也相当不错。@Keven 已经提到了作业队列。这对我们来说太棒了,因为我们可以非常轻松地卸载各种异步运行的任务并保持主请求进程正常运行。例如,当某些类型的事件发生时,我们的一个应用程序会在我们的错误跟踪器中创建任务。由于这是通过 Web 服务完成的,并且错误跟踪器速度非常慢,这可能需要几秒钟的时间。然而,我们并没有让我们的应用程序的用户等待,而是将一个作业排队并让它在后台运行。同样,我们的标准电子邮件类使用作业队列,而不是在我们的代码与 SMTP 服务器通信时让用户等待。所有这些甚至都没有涉及到生成大型报告、运行数据库完整性检查、重建缓存等方面的用处,

页面缓存非常适合那些您可以简单地缓存整个页面并完成它的情况。我们将它与我们的 WSDL 一起使用,因为我们拥有比 PHP 自己的缓存控件更好的控制。同样,下载服务器非常适合缓存某些类型的内容,例如图像。我们像本地 memcached 服务器一样使用数据缓存,通过避免对位于慢速网络其他地方的慢速数据库服务器进行查询,大大加快了各种请求的速度。

当然,正如@André 所提到的,其中有一些非常好的调试、跟踪和事件报告功能。

还有一些用于部署和回滚的不错的功能,这对于业务关键型应用程序非常重要。我打算有一天尝试一下,但现在,我仍在使用我在使用 ZS 之前组装的工具。

现在,您可以通过将各种其他工具组合在一起来获得大部分这些功能(尤其是所有缓存位)。但是,您必须研究和学习所有这些东西,将它们全部安装并一起工作,然后维护它们,包括在更新某些内容时进行适当的集成测试。这需要大量的工作和时间——我个人宁愿把时间花在编写代码上。

说了这么多,还是有缺点的。一方面,事情有时会让人感觉......半生不熟和/或构思不周。例如,如果您尝试获取不存在的项目,数据缓存 API 将返回布尔值 false。而且,它没有检查项目是否存在而不获取的功能。猜猜这意味着什么:你不能安全地存储一个布尔值,因为你不能安全地检索它。它包括一个记录不充分的 APC 兼容层,但尝试使用 APC 的存在函数会产生未定义函数错误。

再举一个例子,我们使用 Mac 作为我们的开发站,但出于对与古老硬件的兼容性的极大误导性担忧,这些硬件往往由所有那些在 PHP 服务器软件上投入数千美元的专业开发人员运行,Zend 选择发布Mac 版本(仅用于开发)为 32-bit only。所以我们被迫开发一个 32 位的应用程序,它可以在其他任何地方以 64 位运行。这在我们的应用程序中导致了很多错误和失败的自动化测试,这反而扼杀了 ZS 的核心目的之一,ZS 是跨开发、测试、登台、QA 和生产环境的相同软件堆栈。我试图说服他们改变这一点,但他们很快就开始无视我。

另一个很大的问题是作业队列只能通过 HTTP 请求来处理作业。该 API 设置为允许其他方法(例如更明智的命令行调用),但 HTTP 是所有工作。这迫使您将 Web 服务器连接与根据设计往往需要长时间运行的任务绑定在一起,因此应该脱离 Web 上下文。而且,它会迫使您跳过障碍,以防止世界通过访问浏览器中的 URL 来触发您的工作。这只是一个愚蠢的决定。

其他示例包括对通过 API 发送到 Zend Monitor 的自定义事件的不良处理,PHP 二进制文件的 php-cli 包装器在由 shebang 行触发时在 Mac 上中断,缓存中完全(完全)缺乏健康和性能报告工具(尽管他们说这在 ZS 6 中发生了变化),以及令人尴尬的不完整文档。我可以继续……

现在,这些缺点,以及随之而来的浪费时间和资源,显然并没有超过我们的收益,但对于我们花费的金额,我肯定会期待更多。

于 2012-07-07T01:28:53.957 回答
0

代码跟踪是 Zend Sever 提供的最好的工具

  1. 根本原因分析是开发人员的时间槽
    当您知道问题的原因时,解决问题很容易。然而,在测试过程中找到问题的根本原因通常具有挑战性,而在应用程序在生产环境中运行时则非常困难。尝试在开发实验室中重现完全相同的环境、应用程序状态和负载既耗时又容易出错,并且使开发人员远离了他们最重要的任务——编写代码。Zend Server 5 通过代码跟踪将根本原因分析提升到一个全新的水平。
    PHP 应用程序的飞行记录器 什么是代码跟踪?
    想想黑匣子飞行记录仪。当飞机出现问题时,您可能不想“重现”问题。这就是飞行记录仪捕获飞行分析师可能需要的完整数据以了解问题发生原因的原因。

  2. Zend Server Code Tracing 就像 PHP 的飞行记录器。
    Zend Server 无需花时间尝试设置环境并重现导致失败的所有步骤,而是实时捕获应用程序的完整执行情况(在生产或测试实验室中),以便您快速找到根本原因。

  3. Zend Server 代码跟踪缩短了根本原因分析时间
    Zend Server 代码跟踪在检测到问题时自动激活,或者由用户手动激活,例如在优化项目期间。Zend Server 代码追踪记录的数据包括:

    • 函数调用树
    • 论据
    • 返回值
    • 期间
    • 内存使用情况
    • 代码行
    • 文件名

Zend Server Web 控制台中显示的跟踪使您能够查看(就像 DVD 一样)应用程序的执行历史记录,并按照单个有问题的请求的足迹快速查明根本原因。

于 2013-05-13T02:50:06.700 回答
0

我发现使用 Zend Server 来减轻对 PHP 软件版本及其在我所有服务器上的所有各种扩展的管理是它最大的优势。

此外,能够通过用户输入和环境变量将问题的根源定位到特定的 PHP 函数,这比浏览 PHP 错误日志更有帮助,尤其是在高流量服务器上。

如果有一个开源替代方案,我很想知道它!我不太高兴 Zend 停止提供免费版本。

于 2014-08-27T14:26:36.713 回答
0

我使用在大型 IBM 服务器(IBMi 系列)上运行的 PHP 应用程序以及使用 COBOL 运行了 20、30 年的旧软件。所以基本上 Zend Server 是我所知道的唯一可以在 IBMi 上运行或至少与它一样健壮的 PHP 平台。这些系统是关键任务。基本上大多数保险公司、银行、股票,甚至学区都在这些类型的系统上运行。因为你可以运行 Zend Server 之类的东西,你可以做一些事情,比如构建一个 REST API,以现代方式公开那些古老的系统并允许面向服务的架构。这就是我一直在研究的内容,以及一个使用 PHP CLI 和 Zend Job Queue 将数据推送到第三方的事件驱动系统。在这种情况下,我们将数据从我们端同步到供应商端。

IBMi 上的 Zend Server 设置了用于静态资源(CSS、图像等)的 nginx 前端,并为动态 PHP 使用 FastCGI 进程,因此它是一个非常强大的设置。它无疑为现代化打开了旧系统。

于 2013-08-19T21:57:03.357 回答