我有一个依赖于请求之间的某些状态信息的 API。作为代码的一个简单的第一个版本,我只是使用 PHP 会话来存储状态信息,而不是更高级的东西(APC、memcache、DB)。在我在网络浏览器中进行的初始测试中,一切都运行良好。但是,当客户端尝试通过非浏览器方法(例如 Curl 或 wget)进行连接时,似乎没有保留状态信息。
只有在浏览器请求页面时才会创建 PHP 会话吗?我明确地使用 session_start() 开始会话,并使用 session_name() 预先命名它。
一个补充说明。我了解到我遇到的主要问题之一是我正在命名会话而不是通过 session_id($id); 设置会话 ID;我使用 session_name() 的目的是检索之前创建的同一会话,正确的方法是设置 session_id 而不是 session_name。
似乎会话信息将保留在服务器上,如下所述(谢谢)。但要保持这一点,您必须传递会话 id,或者,在我的情况下,任何其他可以唯一标识用户的 id。将此 id 用作 session_id,您的会话将按预期运行。