本文章来给大家介绍一篇PHP调用session_start后页面始终加载的问题研究,有需要的朋友可参考。一个PHP页面的执行时间比较长(15秒左右),而只要这个页面没有执行完毕,其他的页面访问都是长时间加载状态,只有那个页面执行完毕了,剩下的页面才能打开。
这是什么情况呢,经过查看,两个页面都设计到了SESSION操作,示例代码如下:
页面一:
页面二:
访问页面一地时候同时访问页面二,你会发现页面二会一直保持加载状态直到页面一执行完毕。
问题的原因是什么呢?
答案是PHP的SESSION机制在作怪,PHP只会在页面代码执行完毕之后才会把SESSION数据写入到文件中,页面不执行完毕,对应的SESSION文件一直都保存着锁定状态,而其他的页面要访问这个SESSION文件就只能保持等待状态,这就是为什么页面二需要等待页面一执行完毕之后才执行。
知道原因后,我们应该如何解决这个问题呢?
答案很简单,PHP已经在内核中提供了相关接口:函数 session_write_close
函数官方文档的描述如下:
Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.
Session数据通常在你的脚本结束后自动保存而不需要调用session_write_close函数。但是session为了避免数据被同时写入将文件锁定住以保证每次只有一个脚本可以访问文件。当你在用框架页面同时访问SESSION的时候将会遇到因为文件锁定而出现的框架持续加载情况。你可以在处理完SESSION变量后立即使用这个函数减少多个框架的加载时间。
像前面的问题,我们可以直接在操作完SESSION数据后调用session_write_close函数立即写入session数据,这样就不会影响到其他页面的正常运行。代码如下:

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

SublimeText3 Chinese version
Chinese version, very easy to use

SublimeText3 Linux new version
SublimeText3 Linux latest version

Notepad++7.3.1
Easy-to-use and free code editor

Dreamweaver CS6
Visual web development tools
