【发布时间】: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