【问题标题】:Is necessary to use imap_close?有必要使用 imap_close 吗?
【发布时间】:2014-06-12 19:33:07
【问题描述】:

我通常使用 php IMAP 函数但不关闭 IMAP 流。有必要吗?有什么好处?

我有一个读取我的电子邮件帐户的 Intranet 面板。 ajax 调用从打开 IMAP 连接的 PHP 脚本获取电子邮件。但是我经常用 ajax 调用 PHP,大约每 2 秒一次,持续大约 30 秒。我每次都会打开一个新连接,但不要关闭它。

使用此文件时,有时我会遇到奇怪的延迟。保持 IMAP 连接打开会导致问题吗?

【问题讨论】:

  • 这不是很容易测试吗?放入 imap_close 看看你的问题是否消失。
  • 当然可以,但我想知道是否有必要关闭。因为我没有找到这方面的信息。

标签: php ajax imap


【解决方案1】:

imap_close() 不是必需的,因为无论脚本何时完成,连接都会关闭。但是,打开连接会使 imapd 子进程保留在服务器上,并且它们并不轻。如果您的脚本在完成使用 imap 后继续运行,则在完成后立即使用 imap_close() 可以释放 imap 服务器上的资源。在脚本结束之前调用 imap_close() 在技术上不需要,因为无论如何连接都会关闭,但应该这样做只是为了对 imap 服务器好:)

此外,如果您的脚本连续快速打开连接,那么您应该重新考虑您的设计:imap_open() 就 imap 服务器上的资源而言是非常昂贵的函数。

【讨论】:

  • 即使我用 ajax 调用 php,我能以某种方式保持连接打开吗?
  • 使您的 ajax 连接持久化并保持您的 php 脚本无限期地运行,直到 ajax 连接断开。这样你只需要在 php 脚本启动时打开 imap 连接,不会占用 imap 服务器上的资源。
  • 你的意思是只调用 php 1 次?但是 javascript 会冻结浏览器,直到 ajax 完成。如果 ajax 需要 15 秒,它将冻结页面 15 秒。
  • 啊?!您知道 AJAX 中的第一个“A”代表什么吗?异步。 AJAX 根据定义是异步的,如果您的 javascript 停止处理 AJAX 请求,浏览器端就会出现问题。很可能您在一个线程中将大量 javascript 放在一起,而实际上您应该分别对 imap 进行 AJAX 调用,这样它就不会阻止其余的 java 脚本。我强烈建议您查看您的 ajax 设计并将 ajax-php-imap 连接器作为单独的函数。
  • 谢谢,我会复习的
猜你喜欢
  • 2020-06-04
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 2016-10-03
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多