【发布时间】:2013-04-21 16:24:53
【问题描述】:
我研究了如何在新电子邮件通过 IMAP 到达邮箱时获得通知。显然有几种方法可以这样做,一种是运行 cron-job(我不想这样做),另一种是使用名为 IMAP-IDLE 的函数。我在 PHP API 中找不到任何关于它的信息,但我确实发现了 imap_ping 方法,它应该可以做到这一点。 在上面的描述中它说“它可能会发现新邮件” 有人可以向我解释一下\给我看一个关于如何做到这一点的代码示例。 如果我只有在连接有效的情况下得到 TRUE \ FALSE,我怎么知道有新邮件到达?
【问题讨论】:
-
所有
imap_ping()所做的是确保用户仍然登录 - 它不会检查新电子邮件或任何类似的东西,您可以使用它来检查是否仍然登录,并且作为保持=-活着。至于您的问题,您希望 PHP 检查新电子邮件何时到达?出于什么目的?将其发送回浏览器? PHP 是一种脚本语言,因此它必须从某个地方调用 - 这取决于确定您正在寻找的解决方案类型的目的。 -
它将从服务器调用,如果有新电子邮件,它将向移动客户端发送通知。来自 php 手册:“bool imap_ping (resource $imap_stream) imap_ping() ping 流以查看它是否仍然处于活动状态。它可能会发现新邮件;这是首选方法 用于定期“新邮件检查”,以及对具有不活动超时的服务器进行“保持活动”。”如果它唯一的作用是确保用户仍然登录,那么定期“新邮件检查”的首选方法是什么?
-
该函数仅在您的 imap 用户仍处于登录状态且流式传输处于活动状态(可能表示新邮件)时返回,这是定期检查的首选方法,如您所见
==true) { //check new mail}类型的东西,而不是通过登录过程。查看函数的返回值,只是判断流是否还活着的真假。您打算如何将通知发送到移动客户端?大多数客户端向服务器发送检查请求,然后返回推送通知的响应。 -
将使用 Apns 发送到移动设备的通知。如果我理解正确,该功能对我没有任何帮助。我正在寻找能够在新电子邮件到达邮箱时提醒服务器的东西。有问题的部分是我希望它在邮件到达时是即时的,而无需我进行定期检查(每 10-15 分钟)
-
尝试为您的方案创建解决方案的问题是 PHP 是一种脚本语言 - 一旦它完成执行,它
unset的所有变量。您可以尝试分叉一个php在无限循环中运行所需脚本的进程,同时继续延长执行时间,但您真的真的不应该解决它方法。最好的办法是在 c/c++ 中创建一个daemon,它可以在后台持续运行,如果你真的希望它尽可能接近即时,它会进行检查并发送通知。