Доступ к переменной сеанса PHP в любое время с помощью JQuery AJAX-запроса? - PullRequest
1 голос
/ 07 декабря 2011

Мне нужен доступ к переменной сеанса PHP в любое время с помощью запроса JQuery AJAX? Возможно ли это?

То, что я делаю, из main.html делает запрос JQuery AJAX POST для внешнего php-файла php / upload.php. Этот скрипт займет около 30 минут, и пока он работает, он постоянно обновляет переменную сеанса "$ _SESSION ['var']". Я хотел бы иметь возможность проверить значение этой переменной сеанса в любое время со своей страницы "main.html". Возможно ли это с помощью jQuery (или другого способа)?

Я буду использовать эту переменную сеанса, чтобы сообщать, насколько близок к завершению "php / upload.php" к завершению.

Спасибо!

Ответы [ 4 ]

2 голосов
/ 07 декабря 2011

Проблема в том, что сеанс сохраняется только в конце выполнения скрипта. Таким образом, любые изменения, сделанные вами в upload.php, не будут отражены до тех пор, пока скрипт не завершится. Вам бы лучше хранить нужные данные в memcache или даже просто в файле. Если вы сделали файл читаемым веб-сервером, вы можете просто опросить его.

Тем не менее, вы можете рассмотреть возможность перестройки системы. Долгосрочный скрипт PHP обычно не является хорошей идеей.

2 голосов
/ 07 декабря 2011

написать новый PHP-файл (check.php) с содержанием:

<?php
session_start();
echo $_SESSION["var"];
?>

И запросите это с AJAX. Файл содержит только переменную. Если вы хотите, чтобы он был более гибким, посмотрите вверх json (JavaScriptObjecktNotification)

1 голос
/ 07 декабря 2011

Если вы передаете что-то, что займет 30 минут, тогда ваше соединение истечет, и вы ничего не получите. Возможно, вы захотите использовать что-то вроде кометы, которая позволит вам открыть соединение с длительным опросом и передать данные с сервера на клиент. Может быть, это поможет: Как реализовать COMET с PHP

0 голосов
/ 07 декабря 2011

Я думаю, я понимаю, что вы говорите.Попробуйте сделать:

var timer=setTimeout(function(){
    jQuery.get('yourscript.php',{getVar:sessionVar},function(data){
        alert(data);
    }
},1000);

Затем очистите свое время, когда закончите.И в вашем файле PHP:

if(isset($_GET['getVar'] && $_GET['getVar']=='sessionVar')
    exit($_SESSION['var']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...