javascript - 使用 Ajax post 调用的 php 脚本可以在脚本执行时发回 SSE 事件吗

标签 javascript php ajax

我的服务器上有一个 php 脚本,它执行多个任务(设置文件夹、复制文件等),我使用 ajax 调用该脚本。

signup.js:

const evtSource = new EventSource("/createuser.php", { withCredentials: true } );
evtSource.onmessage = function(event) {
  console.log(event.data);
}

$.ajax({
    type:     'POST',
    url:      '/createuser.php',
    dataType: 'json',
    data: {
        'username': "test user", 
        'usertype' : "author"
    },
    success: function(data){
        console.log("user created");
    }
});

现在在 createuser.php 上我尝试向我的网页发送消息:

创建用户.php:

<?php
function SendProgressMessage($op){
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');

    switch($op){
        case "userCreated":
            echo "User Created";
        break;
        case "foldersCreated":
            echo "Folder structure created";
        break;
        case "TemplatesCopied":
            echo "Templates Copied";
        break;
    }
    flush();
}
?>

我可以将 evtSource 设置为相同的脚本和 ajax 调用,还是为脚本创建 2 个 session ?

最佳答案

你不能这样设置,AJAX请求将导致服务器端产生一个新的PHP进程,而服务器端不知道第一个进程。

长期工作的脚本应将状态存储到数据库中,以便可以通过第二个(、第三个……)请求独立查询该状态。

关于javascript - 使用 Ajax post 调用的 php 脚本可以在脚本执行时发回 SSE 事件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60638528/

相关文章:

javascript - 使用 asp.net mvc 查看包消息在按钮单击成功时无法正常工作?

javascript - 'for each' 没有在 PUG 中打印出列表 - 请解释一下?

链接中的 JavaScript 变量

php - 如何在 php 中维护 sqlite 换行符

javascript - 如何从 Codeigniter 中的 URL 请求传递多个变量?

javascript - 如何在 cookie 中存储触发的 jquery CSS 状态

php - Zend Framework 2.0 中的自动加载自定义库

php - 使用PDO搜索数据库

javascript - JSON多维数组不显示('array is not defined')

Jquery AJAX删除问题