在某些语言C#或.NET中,这将是一个静态变量,但在PHP中,每次请求后都会清除内存.我希望该值在所有请求中均保持不变.我不需要$_SESSION,因为每个用户的情况都不同.
为了帮助说明,这里是一个示例:
我想要一个这样的脚本,它可以计数.无论哪个用户/浏览器打开URL.
function getServerVar($name){
...
}
function setServerVar($name,$val){
...
}
$count = getServerVar("count");
$count++;
setServerVar("count", $count);
echo $count;
我想要将值存储在内存中.当apache重新启动时,它就不需要持久化,并且数据对于线程安全性也并不重要.
更新:如果在负载平衡的环境中每个服务器具有不同的值,我很好. C#或Java中的静态变量也不会同步.
解决方法:
通常,您将使用数据库来存储计数.
但是,您也可以使用以下文件:
$file = 'count.txt';
if (!file_exists($file)) {
touch($file);
}
//Open the File Stream
$handle = fopen($file, "r+");
//Lock File, error if unable to lock
if(flock($handle, LOCK_EX)) {
$size = filesize($file);
$count = $size === 0 ? 0 : fread($handle, $size); //Get Current Hit Count
$count = $count + 1; //Increment Hit Count by 1
echo $count;
ftruncate($handle, 0); //Truncate the file to 0
rewind($handle); //Set write pointer to beginning of file
fwrite($handle, $count); //Write the new Hit Count
flock($handle, LOCK_UN); //Unlock File
} else {
echo "Could not Lock File!";
}
//Close Stream
fclose($handle);
标签:php,lamp
来源: https://codeday.me/bug/20191009/1877846.html