服务器冻结PHP session_start(同一域上的多个站点)

时间:2014-11-12 10:52:04

标签: php wordpress session

从服务器本身执行时,我遇到 session_start()的问题。

整个问题是我有一个WordPress和eShop。两者都在同一个域上工作并具有相同的会话。当我从eShop转到WordPress时会话可用,但我需要从eShop加载一些组件才能加载到WordPress中。

由于eShop上有Smarty引擎,我需要通过 file_get_contents 获取模板,因为它不是请求,我需要指定eShop的会话ID来识别我。

但是当我用指定的ID调用该函数时,请求只是冻结,任何想法?

1 个答案:

答案 0 :(得分:1)

问题在于安全处理程序。当我将会话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);
?>