在没有会话的情况下跨页面存储变量

时间:2019-05-25 20:31:04

标签: php temp

我正在编写一些代码,用于与XML进行机器对机器的通信。连接的设备将不支持会话。我需要可以在没有会话支持的情况下跨页面工作的PHP变量。

我曾经在几个地方使用过

file_put_contents($file,$content)

这行得通,但这将在完成后进行大量磁盘读写

此外,我无法阅读php:// fd和php:// temp的php手册,因此无法正常工作。 https://php.net/manual/en/wrappers.php.php

我已经尝试了很多方法,但是不知道它是如何工作的。这些方法中的一些也是易变的意思,一旦被阅读,它们就消失了。我知道,一旦我将其读取为变量,便可以将其重新写回php:// temp或php:// fd,以便以后在另一页上使用。

也许有更好的方法可以满足我的需求?

我正在为每页分配10个磁盘访问权限,这肯定会减慢所有访问速度。每次磁盘访问都只有一个字符串,大约一个单词的长度,因此对磁盘进行读写操作似乎很疯狂

1 个答案:

答案 0 :(得分:0)

问题似乎是所讨论的用户代理不支持 cookies (正如您所说的,它们不是Web浏览器),而不是它们不支持“会话”。毕竟,会话是服务器端提供的。

...如果未存储cookie,则会话取决于cookie,则会话将丢失。

会话不需要使用cookie。关于会话,cookie被“简单地”用于传播“会话ID”。使用cookie是执行此操作的默认,首选和最安全的方法,但这不是唯一的方法。

“会话ID”(存储为SID常量的一部分)可以作为URL参数或POST数据进行传递。

可以禁用配置设置session.use_cookiessession.use_only_cookies(即设置为“ 0”),这样PHP甚至不会尝试设置会话cookie。然后,您可以为PHP启用session.use_trans_sid(即设置为“ 1”)以自动重写URL以包含必要的“会话ID”,或者手动使用SID常量来构建URL。

当PHP在cookie,URL参数或POST数据中接收到会话ID时,它将在调用session_start()时恢复会话。不需要Cookie。

参考:


我正在为每页分配10个磁盘访问权限,这肯定会降低访问速度。

每页请求

10个磁盘访问实际上并不是那么多,并且不太可能影响性能。默认的PHP会话处理程序使用“文件”,因此这也会引起磁盘访问,但是如果数据很小的话,我认为每个用户会话可能只有1个。