【问题标题】:PHP exit on page ajax abort()PHP 退出页面 ajax abort()
【发布时间】:2014-07-21 11:07:57
【问题描述】:

我想让浏览器等待任何通知,但如果单击链接则停止等待。 这就是为什么我有一个 PHP 脚本,它作为 while 循环,如果发生某些事情就会结束,然后返回事件。

PHP

require 'required.php';

ignore_user_abort ( false ); // I hoped this does it
set_time_limit ( 60 );

$lock = false; // maybe this helps?

register_shutdown_function ( function () {
    // click the stop button in your browser ...
    $lock = true;
    exit ();
} );

if (isset ( $_SESSION ['user'] ))   {

    while ( ! new_event () && !$lock)   {

        if (connection_status () != CONNECTION_NORMAL) {
            break; // and maybe this works???
        }
        sleep(1);
    }

echo json_encode (array('someparameter','...') );
} else {
echo 'login first';
}

我的 JQuery AJAX 代码在加载后开始等待,并在单击链接后调用 abort()

var pollReq;
$(document).ready(function() {
        doPoll(); // do the first poll

});

function doPoll() {
   pollReq = $.post("wait.php", {parameter: value}, function(result) {
    // new event, do something
    doPoll();
    // this effectively causes the poll to run again as
    // soon as the response comes back
}, 'json');
}

如果链接被点击

$('a[href]').not('noajax').click(
        function(e) {
            e.preventDefault();
            if (typeof pollReq !== 'undefined') {
            pollReq.abort(); // stop waiting
            }
   // Do something...
});

我找不到错误/原因,也许有人找到了。谢谢

【问题讨论】:

    标签: javascript php jquery ajax comet


    【解决方案1】:

    经过这么多尝试和搜索,我终于发现,这都是关于会话的。感谢this 的帖子,我更改了PHP,以便在loop 期间像这样工作

    PHP

    while ( ! newMsg ( $chatID, $lastID ) ) {
        // Did the connection fail?
        if (connection_status () != CONNECTION_NORMAL) {
            break;
        }
        session_write_close();
        sleep(1);
        session_start();
    }
    

    如果你有更好的解决方案,我会很高兴看到它。

    编辑: 这只有效,因为它允许另一个脚本在其间的 1 秒内获取会话 lock()。

    如果您不需要向会话写入任何内容: 将session_write_close(); 放在while 循环之前并省略session_start();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多