Opencart注册需要很长时间

时间:2016-04-06 17:11:51

标签: php email opencart registration

我刚在我的服务器上为我的一个客户安装了一个OpenCart系统(服务器是Debian Wheezy,有Nginx,PHP和MariaDB)。除了一件事,一切都很好。当客户尝试注册时,注册需要花费大量时间,大约需要3分钟。我已经跟踪了问题,并且在向客户和管理员发送电子邮件时很可能会挂起。

我使用SSMTP在服务器上处理电子邮件,SSMTP又使用我自己的电子邮件服务器。像Joomla这样的其他webapp工作正常,电子邮件立即发送,没有任何延迟(系统中的邮件命令也一样)。 Opencart设置为“mail”(我甚至尝试将SMTP直接输入opencart,但它无法正常工作)。

由于我基本上不了解OpenCarts内部工作的任何内容,更有经验的人可以帮我解决这个问题吗?

提前致谢!

修改

我能够成功找出问题的根本原因。它完全不是PHP或OpenCart,而是一个系统的东西。 php.ini中sendmail路径的设置被注释掉了,这意味着PHP试图自己找到它。出于某种原因,在OpenCart的情况下,它用于sSMTP。由于sSMTP是同步的,因此等待它完成需要很长时间。另一方面,Joomla去了我的服务器遗忘的Heirloom mailx来自一些旧的依赖(为什么我不知道)并且邮件命令立即退出,因此没有延迟。

我的解决方案经过数小时的调试和反复试验后,完全废弃了ssmtp和mailx,并使用postfix将邮件中继到外部服务器。现在一切都按预期工作了。

1 个答案:

答案 0 :(得分:0)

我稍微概括一下 - 如何根本导致复杂PHP系统中的性能问题。

请按照以下步骤操作:

  1. 安装Xdebug PHP扩展程序
  2. 配置Xdebug' profiler profiler_enableprofiler_enable_triggerprofiler_output_path等。)
  3. 导航到浏览器速度较慢的页面并加载它(如果设置了profiler_enable,则会为每个请求创建配置文件,如果没有设置,设置profiler_enable_trigger只需将XDEBUG_PROFILE参数添加到网址
  4. 即可
  5. 导航到已配置profiler_output_path的目录,并在某个GUI工具中打开探查器输出文件(请参阅this answer
  6. 检查哪个函数调用时间最长(函数调用只需5毫秒,但如果在单次执行期间调用1000次,则总共需要5秒 - 您应该在GUI工具中看到所有这些信息)
  7. 备注:

    • 你不应该在生产服务器上启用Xdebug(它会降低执行速度)
    • 如果您的应用程序可以被其他人访问,请不要启用profiler_enable,而是启用profiler_enable_trigger,这样您就可以控制触发分析的请求(分析器输出文件可能相当大) )