Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\会话设置将等待脚本结束_Php_Global Variables_Session Variables - Fatal编程技术网

Php $\会话设置将等待脚本结束

Php $\会话设置将等待脚本结束,php,global-variables,session-variables,Php,Global Variables,Session Variables,我想要的:在脚本的前5秒,$\u会话变量应等于“阶段1”,然后应更改为“阶段2” 我得到的:在5秒结束之前,$\u会话变量根本没有设置,此时它被设置为“阶段1”,并立即设置为“阶段2” 我做错了什么 (我需要这个代码概念,以便能够使用AJAX在另一个页面上获取$\u SESSION变量,以便实时跟踪长PHP脚本的进度。) 编辑:我想我意识到了问题所在:当服务器忙于在一个页面中调用睡眠时,服务器会“挂起”,直到脚本完成。因此,当尝试在另一个页面上检索$\u会话['variable']时,该页面只

我想要的:在脚本的前5秒,$\u会话变量应等于“阶段1”,然后应更改为“阶段2”

我得到的:在5秒结束之前,$\u会话变量根本没有设置,此时它被设置为“阶段1”,并立即设置为“阶段2”

我做错了什么

(我需要这个代码概念,以便能够使用AJAX在另一个页面上获取$\u SESSION变量,以便实时跟踪长PHP脚本的进度。)


编辑:我想我意识到了问题所在:当服务器忙于在一个页面中调用
睡眠时,服务器会“挂起”,直到脚本完成。因此,当尝试在另一个页面上检索
$\u会话['variable']
时,该页面只需等待(连接…)直到第一个页面完成其
睡眠
,然后服务器才会将第二个页面发送到浏览器


我需要升级到更好的服务器吗?(我目前使用的是1和1最便宜的托管计划)

我在另一篇文章中看到了一些东西,也许这对你有用

尝试添加
设置时间限制(0)位于文档顶部。机会是
它正在达到“最大执行时间”,并导致脚本
终止


我在另一篇文章中看到了一些东西,也许这对你来说很有用

尝试添加
设置时间限制(0)位于文档顶部。机会是
它正在达到“最大执行时间”,并导致脚本
终止


你必须使用PHP吗?或者你也可以使用Javascript?我测试了这个,我的脚本等待了5秒钟
echo
输出
$\u会话['variable']
date('h:i:s')
的值,查看阶段1和阶段2的时间戳。@Re:Javascript:在设置$\u会话变量的页面上,我不能使用Javascript,它必须留在服务器端。我想要检索变量的页面使用jQuery的AJAX获取一个PHP文件,该文件回显
$\u会话['variable']
@Daniel\u,这是回显时间戳的好主意。结果确实相隔5秒!这使得问题变得更为强烈,为什么在“阶段2”已经发生之前,我无法检索“阶段1”$\u会话['variable']?这可能是因为服务器忙于睡眠脚本吗?根据您问题中的代码,$_会话['variable']将具有阶段2的值,因为它在5秒后被分配了这个新值,所以在脚本结束时,它的值是阶段2。您可以每隔5秒执行2个ajax调用—每个阶段一个。您必须使用PHP吗?或者你也可以使用Javascript?我测试了这个,我的脚本等待了5秒钟
echo
输出
$\u会话['variable']
date('h:i:s')
的值,查看阶段1和阶段2的时间戳。@Re:Javascript:在设置$\u会话变量的页面上,我不能使用Javascript,它必须留在服务器端。我想要检索变量的页面使用jQuery的AJAX获取一个PHP文件,该文件回显
$\u会话['variable']
@Daniel\u,这是回显时间戳的好主意。结果确实相隔5秒!这使得问题变得更为强烈,为什么在“阶段2”已经发生之前,我无法检索“阶段1”$\u会话['variable']?这可能是因为服务器忙于睡眠脚本吗?根据您问题中的代码,$_会话['variable']将具有阶段2的值,因为它在5秒后被分配了这个新值,所以在脚本结束时,它的值是阶段2。您可以每隔5秒执行2次ajax调用—每个阶段一次。
session_start();

$_SESSION['variable']='Stage 1';

sleep(5);

$_SESSION['variable']='Stage 2';