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