Opencart 注册需要很长时间
Posted
技术标签:
【中文标题】Opencart 注册需要很长时间【英文标题】:Opencart registration takes extremely long 【发布时间】:2016-04-06 17:11:51 【问题描述】:我刚刚在我的服务器上为我的一位客户安装了一个 OpenCart 系统(服务器是 Debian Wheezy,带有 nginx、php 和 MariaDB)。一切正常,除了一件事。当客户尝试注册时,注册需要花费大量时间,大约 3 分钟左右。我已经追踪了问题,并且在向客户和管理员发送电子邮件时很可能会挂起。
我使用 SSMTP 在服务器上处理电子邮件,而 SSMTP 又使用我自己的电子邮件服务器。 Joomla 等其他 web 应用程序运行良好,并且电子邮件会立即发送,没有任何延迟(系统中的邮件命令也是如此)。 Opencart 设置为“邮件”(我什至尝试将 SMTP 直接输入到 opencart,但它不起作用)。
由于我对 OpenCarts 的内部工作原理一无所知,有经验的人可以帮我解决这个问题吗?
提前致谢!
编辑:
我已经能够成功地确定问题的根本原因。这根本不是 PHP 或 OpenCart 的问题,而是系统的问题。 php.ini 中的 sendmail 路径设置被注释掉,这意味着 PHP 会尝试自行查找。出于某种原因,它在 OpenCart 的情况下使用 sSMTP。由于 sSMTP 是同步的,所以需要很长时间才能等待它完成。另一方面,Joomla 使用了 Heirloom mailx,因为某些旧的依赖项(为什么我不知道)而忘记了我的服务器,并且邮件命令立即退出,因此没有延迟。
经过数小时的调试和试错后,我的解决方案是完全废弃 ssmtp 和 mailx,并使用 postfix 将邮件中继到外部服务器。现在一切正常。
【问题讨论】:
【参考方案1】:我会概括一下 - 如何从根本上导致复杂 PHP 系统中的性能问题。
按照以下步骤操作:
-
安装Xdebug PHP 扩展
配置Xdebug的profiler(
profiler_enable
或profiler_enable_trigger
、profiler_output_path
等)
导航到浏览器中速度较慢的页面并加载它(如果设置了profiler_enable
,将为每个请求创建配置文件,如果未设置并且设置了profiler_enable_trigger
,则只需添加XDEBUG_PROFILE
URL 参数)
导航到您已配置 profiler_output_path
的目录并在某些 GUI 工具中打开分析器输出文件(请参阅 this answer)
检查哪个函数调用花费的时间最多(一个函数调用可能只需要 5 毫秒,但如果在单次执行期间调用 1000 次,总共需要 5 秒 - 您应该在 GUI 工具中看到所有这些信息)
注意事项:
您不应该在生产服务器上启用 Xdebug(它会减慢执行速度) 如果您的应用程序可以被其他人访问,请不要启用profiler_enable
,而是启用profiler_enable_trigger
,这样您就可以控制触发分析的请求(分析器输出文件可能非常大)
【讨论】:
感谢您的回答,但不幸的是它对我没有帮助。我尝试在开发机器上复制环境,但问题不存在(可能是因为开发服务器无法发送电子邮件)。问题所在的服务器是具有多个其他应用程序的生产服务器,因此我无法在那里安装 xdebug。 @user2823584 即使它是生产机器,您仍然可以安装它并禁用除分析器和profiler_enable_trigger
之外的所有内容。它不应影响其他应用程序的性能。
@user2823584 感谢您接受我的回答,希望它能帮助您解决问题。但这只是一个指导,如果您可以发布有关问题的根本原因和真正解决方案的详细信息,如果您要解决它并将其标记为已接受的答案,那就太好了(您可以对我的答案进行投票;))。以上是关于Opencart 注册需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章
xml 缓存Opencart 1.5的类别数据,使其更快。 Opencart安装有很多类别真的很慢。 HTTP://forum.opencart