【问题标题】:Why is my browser to wait?为什么我的浏览器要等待?
【发布时间】:2016-05-28 04:00:49
【问题描述】:

首先,感谢您看到我的帖子,我使用 AJAX 向服务器 PHP (laravel) 发送请求,服务器将处理请求(大约 10 秒),然后再将请求返回给 AJAX。但是,当 AJAX 请求等待时,我打开其他浏览器访问我的网页 -> 它仍然等待 10 秒。我不明白??? 我的 js

function pullRequest() {
  /* send request to server */
  var xhr = $.ajax({
    method: 'POST',
    url: 'pull?random_key='+Math.floor(Math.random()*10),
    data: {'_token':$('meta[name=csrf-token]').attr('content')},
    success: function(response) {
      /* pull request */
      pullRequest();
    },
  }); /* end ajax */
  $('a[href]').click(function() {
    xhr.abort();
  });
} /* end function pullRequest */

$(function() {
  // pullRequest();
  setTimeout('pullRequest()', 2000);
});

我的 php

public function handle(Request $request) {
  $time = time()+50;
  while(1) {
    echo connection_status();
    if($this->hasNewMessages() || time() >= $time) {
      break;
    }
    continue;
  }
  return $this->messages;
}

我已经录制了一个关于它的视频。对不起,因为我不知道插入它。请关注 youtube 链接:https://www.youtube.com/watch?v=8jqPU3R-60I

感谢您阅读

【问题讨论】:

  • 这有两个常见的原因:Web 服务器的配置和 PHP 会话。如果可以的话,你应该尽快用session_write_close()关闭你的会话:php.net/manual/en/function.session-write-close.php
  • 我尝试将 session_write_close() 添加到 while 循环中,它不起作用...
  • 它不属于循环,但显然这不是你的问题。你的网络服务器是什么,你可以访问它的配置吗?
  • 我使用 localhost(laravel 框架),我访问它的所有权限。
  • 这不是问题,但现在您提出另一个问题:您的客户端浏览器与服务器在同一台机器上吗?请回答我之前关于您使用的网络服务器(Apache/Nginx/IIS)的问题。

标签: php ajax laravel long-polling


【解决方案1】:

使用命令php artisan serve,您实际上正在启动 PHP 的内置 Web 服务器。

如 PHP 手册中所述:

警告

此网络服务器旨在帮助应用程序开发。它也可用于测试目的或在受控环境中运行的应用程序演示。它并非旨在成为功能齐全的 Web 服务器。它不应该在公共网络上使用。

如果您想要生产级安装或任何附加功能,您需要使用单独的 Web 服务器,例如 Apache(您错误地使用了它)。

【讨论】:

  • 天哪!我误会了。非常感谢。
猜你喜欢
  • 2011-10-13
  • 2022-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2014-01-16
  • 2019-12-11
  • 1970-01-01
相关资源
最近更新 更多