私はこの奇妙な問題を長い間抱えており、それを解決しようとしてきましたが、成功しませんでした。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 応答はデータベースに保存されません。また、応答が返ってきた後、ユーザーが次のページに転送された後、ユーザーが Web サイトからログアウトされたという報告もほとんどありませんでした。
私のセッション設定は次のとおりです。
$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;
}
これについて何か助けていただければ幸いです。ありがとうございました。