您好,我的代码如下:
file1.php:
session_start();
$object1 = new object1($_SESSION['variable']);
switch($_GET['variableGet']){
case 'a': $object2 = new object2(); break;
case 'b': $object2 = new object2(); break;
}
/*
etc etc
*/
file2.php:
require_once('file1.php');
sleep(5);
$object2->doSomethingForFile2();
echo 'file2 is done!';
file3.php:
require_once('file1.php');
sleep(7);
$object2->doSomethingForFile3();
echo 'file 3 is done!';
使用AJAX我调用file2.php和file3.php。
我想做什么:
我希望file2和file3同时启动。
问题:
file3正在等待file2 - >当file2完成(5秒后),然后file3启动脚本,整个ajax在12秒内加载(sleep(5)+ sleep(7)),而不是7秒。
自己的观察:
此问题取决于* require_once(file1.php)*,它在file2和file3中使用。如果我将运行这样的代码:
file2.php:
sleep(5);
echo 'file2 is done!';
file3.php:
sleep(7);
echo 'file 3 is done!';
整个数据在7秒内加载(5秒后返回file2.php,然后在2秒后加载file3.php)
答案 0 :(得分:2)
会话数据被锁定以防止并发写入,任何时候只有一个脚本可以在会话上运行。因此,您的第二个脚本等待第一个脚本完成。当您不再使用会话变量时,应使用session_write_close
关闭会话。