先看一個例子,功能:
1.點擊頁面中一個按鈕,ajax執行php,php中用session記錄執行到哪一步。
2.使用ajax輪詢另一個php,獲取session中數據,輸出執行到哪一步。
session.html 調用php執行,並輸出執行到第幾步
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<title> session lock </title>
</head>
<body>
<input type="button" value="handle" onclick="handle()">
<div id="result"></div>
<script type="text/javascript">
function handle(){
$.get("handle.php"); // 執行handle
// 每500毫秒請求,獲取執行到第幾步
var et = setInterval(function(){
$.get("getstep.php",
function(data){
$('#result').html('當前執行:' + data + '<br>');
if(data=='complete'){
clearInterval(et);
}
}
);
},500);
}
</script>
</body>
</html>
handle.php 執行並記錄執行到第幾步
<?php
session_start();
$_SESSION['step'] = '';
$n = 1;
while($n<=10){
$_SESSION['step'] = $n;
sleep(1);
$n++;
}
$_SESSION['step'] = 'complete';
?>
getstep.php 獲取執行到第幾步
<?php session_start(); echo isset($_SESSION['step'])? $_SESSION['step'] : ''; ?>
執行時發現,並不是每一步返回,而是等待10秒後直接返回complete。
查看本欄目