Может ли скрипт php вызываться с использованием Ajax после отправки событий SSE во время выполнения скрипта - PullRequest
0 голосов
/ 11 марта 2020

У меня на сервере есть сценарий php, который выполняет несколько задач (настройка папок, копирование файлов и т. Д. c), и я вызываю сценарий с помощью ajax.

т.е.

регистрация. 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 Я пытаюсь отправить сообщение на мою веб-страницу:

createuser. 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 сеанса?

1 Ответ

1 голос
/ 11 марта 2020

Вы не можете настроить его таким образом, запрос AJAX приведет к новому процессу PHP на стороне сервера, который не знает о первом процессе.

Долго работающий скрипт должен сохранять статус в базе данных, откуда он может быть запрошен независимо вторым (, третьим, ...) запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...