我长期遇到这个奇怪的问题并一直试图解决它而没有任何成功。 我有一个基于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;
}
我真的很感激任何帮助。谢谢。