在完成对第三方API的调用后,Codeigniter会话有时会把我踢出去

时间:2012-07-05 12:50:25

标签: codeigniter session session-timeout

我长期遇到这个奇怪的问题并一直试图解决它而没有任何成功。 我有一个基于CI 1.7.2的CI站点。它在大多数情况下都能正常工作。但很多时候它没有。

问题是,我们填写了一个包含许多字段的表单,并将其提交给控制器中的方法进行检查。然后,它使用curl将数据发布到第三方Web服务。

我有一个错误/订单响应跟踪器设置,每次我从API收到回复时都会给我发送邮件。邮件内容的格式为:

订单ID:5876结果长度 - 8056或
订单ID:5877结果长度 - 1121 ....等等每个订单。

现在,很多时候我收到的邮件如下:

订单ID:结果长度 - 34441 (请注意此处缺少订单ID)
订单ID:结果长度 - 9700

现在,我邮件的代码恰好是

mail('myemail@xyz.com','Order ID: '.$this->session->userdata('SITE_ORDER_NO').' Result length - '. $lengthResponse , $orderResult, $headers);

所以它似乎是,

$this->session->userdata('SITE_ORDER_NO') 

代码段不再具有订单ID。因此,API响应不会保存在数据库中。此外,我收到的报告显示,在回复后,用户在转移到下一页后退出了网站。

我的会话设置是:

$config['sess_cookie_name']             = 'cisessionJHGJHSOMECAPITALLETTERS';   
$config['sess_expiration']              = 7200;   
$config['sess_encrypt_cookie']          = TRUE;   
$config['sess_use_database']            = TRUE;   
$config['sess_table_name']              = 'user_sessions';   
$config['sess_match_ip']                = TRUE;   
$config['sess_match_useragent']         = TRUE;   
$config['sess_time_to_update']          = 300; 

辅助函数的代码是:

function call_order_curl($postVars){  
    $posturl = "API_URL";   
    $ch = curl_init();   
    curl_setopt($ch, CURLOPT_URL, $posturl);   
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,300);   
    curl_setopt($ch,CURLOPT_TIMEOUT,600);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
    curl_setopt($ch, CURLOPT_HEADER, 0);   
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postVars);   
    curl_setopt($ch, CURLOPT_POST, 1);  

    $response = curl_exec($ch);   
    return $response;   
}   

我真的很感激任何帮助。谢谢。

0 个答案:

没有答案