1

你好我有这样的代码:

文件1.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
*/

文件2.php:

require_once('file1.php');
sleep(5);
$object2->doSomethingForFile2();
echo 'file2 is done!';

文件 3.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 秒内加载(睡眠(5)+睡眠(7)),而不是 7 秒。

自己的观察:

这个问题取决于*require_once(file1.php)*,在file2和file3中使用。如果我将运行这样的代码:

文件2.php:

sleep(5);
echo 'file2 is done!';

文件 3.php:

sleep(7);
echo 'file 3 is done!';

整个数据在 7 秒内加载(5 秒后 file2.php,然后 2 秒后 file3.php)

4

1 回答 1

2

会话数据被锁定以防止并发写入任何时候只有一个脚本可以对会话进行操作。因此,您的第二个脚本等待第一个脚本完成。session_write_close当您不再使用会话变量时,您应该使用来关闭会话。

于 2013-10-05T17:47:36.767 回答