我在从服务器本身执行session_start()时遇到问题。
整个问题是我有一个WordPress和eShop。两者都在同一个域上工作并且具有相同的会话。当我从eShop转到WordPress时,会话是可用的,但我需要从eShop加载一些组件才能加载到WordPress中。
由于eShop上有Smarty引擎,我需要通过file_get_contents获取模板,而且这不是请求,我需要指定eShop的会话ID来识别我。
但是,当我调用具有指定ID的函数时,请求会冻结,有什么想法吗?
问题出在安全处理程序上。当我将会话ID提取到eShop时,它必须创建一个具有指定ID的新会话,但该会话仍然被WordPress打开,这导致在尝试访问eShop中的会话文件时服务器上的文件锁定和冻结。
因此,我采用了以下解决方案:您需要关闭会话文件,以便eShop可以通过使用session_write_close开始使用会话文件。
<?php
// close session file
session_write_close();
// build the request url with session_id
$load_basket = $this->_eshop_url .'&force_session='.session_id();
// fetch the output of eShop template
echo file_get_contents($load_basket);
?>