- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
最初,我只是想验证 session_start 锁定 session 。所以,我创建了一个 PHP 文件,如下所示。基本上,如果 pageview 是偶数,页面会休眠 10 秒;如果综合浏览量很奇怪,则不会。并且,session_start用于获取$_SESSION中的页面浏览量。
我试图在一个浏览器的两个选项卡中访问该页面。自从我明确让它休眠以来,第一个选项卡需要 10 秒也就不足为奇了。第二个选项卡不会休眠,但它应该被 sessiont_start 阻止。这按预期工作。
令我惊讶的是,第二页的输出显示 session_start 几乎没有花费任何时间。实际上,整个页面似乎不需要时间来加载。但是,该页面确实需要 10 秒才能在浏览器中显示。
obtained lock
Cost time: 0.00016689300537109
Start 1269739162.1997
End 1269739162.1998
allover time elpased : 0.00032305717468262
The page views: 101
PHP 是否从 PHP 页面中提取 session_start 并在其他 PHP 语句之前执行它?
这是代码。
<?php
function float_time()
{
list($usec, $sec) = explode(' ', microtime());
return (float)$sec + (float)$usec;
}
$allover_start_time = float_time();
$start_time = float_time();
session_start();
echo "obtained lock<br/>";
$end_time = float_time();
$elapsed_time = $end_time - $start_time;
echo "Cost time: $elapsed_time <br>";
echo "Start $start_time<br/>";
echo "End $end_time<br/>";
ob_flush();
flush();
if (isset($_SESSION['views']))
{
$_SESSION['views'] += 1;
}
else
{
$_SESSION['views'] = 0;
}
if ($_SESSION['views'] % 2 == 0)
{
echo "sleep 10 seconds<br/>";
sleep(10);
}
$allover_end_time = float_time();
echo "allover time elpased : " . ($allover_end_time - $allover_start_time) . "<br/>";
echo "The page views: " . $_SESSION['views'];
?>
最佳答案
这似乎是一个与 Firefox 相关的“问题”。如果您在两个选项卡/窗口中请求相同的 url,第二个请求将等待第一个请求完成(也可能是阻止第二个请求的插件,尚未测试)。
举个例子
<?php // test.php
$start = microtime(true);
echo "<pre>start: $start</pre>";
sleep(5);
$end = microtime(true);
echo '<pre>', $start, "\n", $end, "\n", $end-$start, '</pre>';
我调用了两次,输出是
start: 1269742677.6094
1269742677.6094
1269742682.609
4.9995958805084
和
start: 1269742682.6563
1269742682.6563
1269742687.6557
4.9994258880615
请注意,开始时间之间已经有 5 秒的间隔。
当被调用为 http://localhost/test.php
和 http://localhost/test.php?a=b
而不是两次完全相同的 url这不会发生。
IE8 和 Chrome 都不显示该行为。
关于php - PHP中session_start是如何锁定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2531584/
我有一个顶部导航栏,位于外部 PHP 文件内,该文件通过包含“topnav.php”链接到主页上的适当位置;这样,当我需要更改 href=""时,我不需要浏览每个页面。我还用它来显示 -> 登录身份:
我正在尝试将 Sessions 与 PHP 一起使用,我在 index.php 的开头使用 session_start(); 启动它们,但收到以下错误消息: Warning: session_star
我开始一个新 session :session_start();然后我像这样设置一些 session 变量: $_SESSION['name']=$_POST['name']; 和一些其他变量。 在页
我已经环顾了这个问题 - 但似乎我能找到的只是那些在连接到本地数据库或其他东西时遇到问题的人(不太确定)。我在我的网站上遇到了问题(任何时候我对具有 session_start() 的文件进行 aja
我正在编写一个登录脚本,但是由于我没有对/tmp 文件夹的写权限,所以我又创建了一个并将 session.dave_path 设置为新文件夹。 我一直在终端上测试脚本,文件夹获得了一个新条目,但是当我
我应该在何时何地使用 PHP 中的 session_start()? 例如,假设我有一个登录脚本,它设置了一个 session 变量来判断用户是否登录。然后我必须将 session_start() 放
我有一个启动 session 的 php 文件,后面是一些 html。后来我使用 include "some_file.php" 包含另一个文件。 some_file.php 具有 php 和 mys
我目前正在尝试将我的网站从我机器上的本地主机移动到我的网络服务器。还有一个问题。 一切正常,除了用于管理的登录表单。 起初我以为是 not-saving-as-utf-8-without-BOM 问题
我应该在何时何地使用 PHP 中的 session_start()? 例如,假设我有一个登录脚本,它设置了一个 session 变量来判断用户是否登录。然后我必须将 session_start() 放
当我在代码中使用 session_start() 时,我的 session 设置正确,当我运行代码并登录时,它使我保持登录状态并且一切正常,但是当我在位于顶部的 PHP 代码下面添加 HTML 时页面
我的代码有问题。这是我按照教程制作的登录/注册脚本。 我遇到的问题是,我希望脚本仅在用户输入正确的登录详细信息时回显“已登录”,但即使我没有输入任何登录详细信息,它仍然会回显“已登录”。我检查了它,如
我使用 php 和 mysql 创建了一个登录表单, 这是登录后应该出现的页面: 我添加了此代码以在用户未登录时禁用对该页面的访问。我的问题是,添加此代码后,我无法使用以前可以登录的用户登录。我
我希望你做得很好,我显然正在用登录帐户制作这个网站,我已经在本地数据库和服务器数据库中注册了我的用户。我的 HTML/PHP 代码在运行时没有显示任何错误。我已经检查了我的数据库连接。这是正确的。该网
我正在尝试使用 php 启动 session ,但我总是收到此错误: Fatal error: Call to undefined function session_start() in /www/t
我对 session_start() 有一些问题; 我知道在 session_start() 之前不应该输出任何东西;声明 但是我在我的脚本中找不到问题 索引.php: 但我总是 g
我一直在经历一些 $_SESSION示例,我有点困惑,我应该使用 session_start()每次访问或设置之前 $_SESSION['variable']或者我应该只使用 session_star
请解释如何session_start()功能有效。 我不明白在 php 中启动 session 时的操作顺序。尝试解释。 HTTP 是一种客户端-服务器架构。这意味着浏览器发送请求,服务器处理请求并返
我正在寻找一种处理 session_start 错误的通用方法,而不是一种处理特定错误的方法。可能会发生许多错误,例如 session 目录已满,这会导致 fatal error 。我想要一种方法来捕
有点奇怪的问题,好的,这是我的设置... domain.com 调用从 sub.domain.com 上的 Iframe 读取数据 sub.domain.com 对 sub.domain.com/ca
我正尝试在我网站的标题页中开始 session 。但似乎可能存在某种错误,因为它失败并出现以下错误: Warning: session_start() [function.session-start]
我是一名优秀的程序员,十分优秀!