2011-03-25 74 views
1

我使用PHP Imap Library和Ajax来显示电子邮件中的搜索结果。我发现的主要问题是提供商(特别是Hotmail)会在接近6或7次连接后切断连接。如何在不结束php脚本的情况下显示ajax结果? jquery - PHP

而不是每个脚本中的imap_connect(),我想连接一次,然后连续显示信息与Ajax。我只是不知道该怎么做。问题是我需要通过ajax吐出数据。有没有什么方法可以返回信息,而无需通过jQuery结束PHP程序?

我也可能做到这一点,如果我将imap连接变量$connection传递给php查询而不是调用它,但不确定如何传递它。以下是我目前正在传递变量的方式。

var dataString='email=<?php echo $email_address; ?>&connection=<?php echo $connection; ?>&password=<?php echo $password; ?>&server=<?php echo $server;?>&daysago='+daysago+'&num='+num; 
    $.ajax({ 
     type: "POST", 
    url: "fastsearch.php", 
    data: dataString, 
    success: function(msg){ 

链接到IMAP连接(和一般的PHP IMAP库): http://php.net/manual/en/function.imap-open.php

回答

2

我已经做了,在过去的PHP和jQuery“插座仿真”节目,这是一种基于COMET方法保持长时间连接。

这实际上是Node.js对于易于安装和使用的Socket.io库有利于Web应用程序开发的光辉示例。除了Node.js之外,你有几个选择,分叉一个过程,使你的连接保持活跃和持久性,每次有人登录时都不会实时连接(使用像芹菜这样的异步任务管理器),并且使用COMET方法基本上是一个无限的while循环,它不断向客户端吐出数据。后者会保持一个连接打开,但也会非常不稳定,非高性能,并且使用PHP作为工作的错误工具。

我希望你能够重新考虑你对这个特定任务的PHP依赖关系,而转而倾向于为这个特定的服务器推/持久性设计的库。