先看一個例子,功能:
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。
查看本欄目