AFAIK,PHP会话实际上是同步的。这意味着在会话完成Process.php之前,Process.php脚本将阻止getProgress.php脚本运行。
所以发生的是:
- Process.php启动并调用session_start()
- 服务器将会话控制赋予session_start()
- getProcess.php启动并调用session_start()
- 服务器将阻塞getProcess.php,直到未使用会话为止。
- Process.php完成并关闭会话。
- 服务器恢复getProcess.php并赋予其对会话的控制权。
- getProcess.php现在可以看到该过程已完成。
参见http://www.php.net/manual/zh/function.session-write-
close.php。
会话数据通常在脚本终止后存储,而无需调用session_write_close(),但是由于会话数据被锁定以防止并发写入,因此任何时候任何会话都只能对一个脚本进行操作。[…]
由于目前无法访问服务器,因此我尚未测试以下代码,但我想类似的东西应该可以工作:
<?php$varArray=array(1,2,3,4);session_start();$_SESSION['total']=count($varArray);session_write_close ();foreach($varArray as $val){ session_start(); $_SESSION['current']=$val; session_write_close (); sleep(2);}?>


