【发布时间】:2023-04-02 20:11:01
【问题描述】:
我正在尝试使用 websockets,并想检测用户是否已从页面导航到运行 PHP 流脚本。其他一切正常。
我所做的一切都不会阻止 PHP 脚本运行(在本地使用 Xampp)。
我目前正在使用 javascript 的 beforeunload、PHP 的 connection_aborted()、connection_status() 甚至 file_exists()(这是目前唯一可以使用的!!!)。
在脚本存在或我重新启动 apache 之前,我无法重新加载页面,但这是我必须开始工作的中止检测。 Firebug 报告套接字脚本已中止,但 PHP 只是保持 ion 运行。任何帮助表示赞赏。
我的 javascript 看起来像这样
function socket_open(){
if(!!window.EventSource){
var websocket = new EventSource('./ajax/progress.php');
websocket.addEventListener('message', function(e){
var data = JSON.parse(e.data);
console.log(data);
},false);
$(window).bind('beforeunload', function(){
websocket.onclose = function(){};
websocket.close();
});
}
}
而我的 PHP 是这样的。 ./ajax/progress.php
function get_task_progress(){
$output = array();
//conditionally create some output
if(!empty($output)){
echo 'data: '.json_encode($output)."\n\n";
ob_flush();
flush();
}
sleep(1);
if(!connection_aborted() && connection_status()==0 && file_exists('1.txt')){
get_task_progress();
}
}
【问题讨论】:
标签: javascript php websocket phpwebsocket