我正在编写一些代码,用于与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个磁盘访问权限,这肯定会减慢所有访问速度。每次磁盘访问都只有一个字符串,大约一个单词的长度,因此对磁盘进行读写操作似乎很疯狂
答案 0 :(得分:0)
问题似乎是所讨论的用户代理不支持 cookies (正如您所说的,它们不是Web浏览器),而不是它们不支持“会话”。毕竟,会话是服务器端提供的。
...如果未存储cookie,则会话取决于cookie,则会话将丢失。
会话不需要使用cookie。关于会话,cookie被“简单地”用于传播“会话ID”。使用cookie是执行此操作的默认,首选和最安全的方法,但这不是唯一的方法。
“会话ID”(存储为SID
常量的一部分)可以作为URL参数或POST数据进行传递。
可以禁用配置设置session.use_cookies
和session.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个。