2016-05-26 3 views
0

編集#1:以下に示すように、私は複数の$ db->クエリを持っています。この問題がデータベースへの呼び出しが多すぎる遅い接続?原因は、ページ自体がデータベースの呼び出しを動作させるだけで時々通過しないでください。これが問題であれば、そのための良い解決策は何でしょうか?データベースクエリがランダムに失敗し、私のマシン上で複製できない

私はこれで本当に苦労しました。何らかの理由で、データベースコードは顧客の時間の2/3にしか動作しません。私は彼らのためにもうまくいかない理由を見つけることができませんでした。

支払ゲートウェイが私にトランザクションIDと支払いが成功したかどうかの確認を送信する最後のページまで、すべての顧客が私の視力を使います。しかし、いくつかの理由でトランザクションを追加し、私のデータベースの行が(問題は、ユーザーがクッキーをブロックしたと嘘はありません。)クッキーから

$db->query("UPDATE transactions 
      SET charge_id = '{$trans_id}' 
      WHERE cart_id = '{$cart_id}'"); 

$cart_idをされて動作していない今、私は以前に問題がサファリ内嘘をついたと思ったとしていましたIE(問題を抱えている顧客にはこれらのブラウザがあったため)が、いくつかのテストの後、両方のブラウザがコンピュータと友人の両方で動作します。だから私は本当に問題が何であるか分からない。トランザクションIDが設定されていない場合、トランザクションは完了としてマークされません。つまり、管理パネルの在庫システムに登録されず、アイテムの数量が更新されません。注文とアイテムが通過して処理されているので、このページに問題があります。

現在可能なアイデア(いずれかの解決方法がわからない):遅くinterenetを持つ人々のための問題を引き起こして

あまりにも多くのDBクエリ。

<?php require_once 'system/init.php'; include 'includes/head.php'; include 'includes/navigation.php'; include 'includes/headerpartial.php'; include 'includes/leftbar.php'; ?> 

<div id="maincontent" class="col-md-8"> 

<?php 

if ($_GET['response_code'] == 1) { $trans_id = $_GET['transaction_id']; 

$db->query("UPDATE transactions SET charge_id = '{$trans_id}' WHERE cart_id = '{$cart_id}'"); 
$db->query("UPDATE cart SET paid = 1 WHERE id = '{$cart_id}'"); 
$tsql = $db->query("SELECT * FROM transactions WHERE charge_id = '$trans_id' "); 
$tran = mysqli_fetch_assoc($tsql); 
$domain = '.'.$_SERVER['HTTP_HOST']; 
setcookie(CART_COOKIE,'',1,"/",$domain,false); 

?> <h1 id="reciept">Thank you for your support!</h1><hr> <p id="reciept"> On behalf of LettuceHeadsFarm <?=$tran['full_name']?> we thank you for your purchase and hope you enjoy it! </p> 

<p id="reciept"> You have selected <b>"<?=$tran['pickup-location']?>"</b> as your pickup point. </p> 

<table id="nav-button" class="table table-bordered table-auto"> <tbody> <tr> <td>Transaction ID : <?=$tran['charge_id']?></td> </tr> <?php $a = 1; $it = 1; $string = $tran['items']; $itemar = explode(',', $string); $num = 1; 

$istr = $tran['inventory']; 
$stri = explode(',', $istr); 

if ($tran['status'] != "Complete") { 

    foreach (array_slice($stri, $num) as $inve){ 
     $exploded = explode('.', $inve); 
     $itname = $exploded['0']; 
     $itquan = $exploded['1']; 

     $db->query("UPDATE products 
        SET `quantity` = `quantity` - '$itquan' 
        WHERE title = '$itname'"); 
     $db->query("UPDATE products 
         SET `Sold` = `Sold` + '$itquan' 
        WHERE title = '$itname'"); 
     $it++; 
    } 
    $compl = "Complete"; 
    $db->query("UPDATE transactions 
       SET `status` = '$compl' 
       WHERE charge_id = '$trans_id'"); 
} 

foreach (array_slice($itemar, $num) as $itemr){ 

?> <tr> <td><?=$itemr?></td> </tr> 

<?php $a++; } ?> 

<tr> <td> Total: <?=money($tran['grand_total']);?> </td> </tr> </tbody> 

</table> <?php }else { echo "Sorry, an error occurred: ".htmlentities($_GET['response_reason_text']); } ?> </div> 

<?php include 'includes/rightbar.php'; include 'includes/footer.php'; ?> 

サイドバーコード:

<!-- right side bar--> 
<div id="sidebar" class="col-md-2" > 
    <div class="col-md-12" style="font-size: 75%;"> 
    <ul id="tabs" class="nav nav-pills" role="toolbar"> 
      <li role="presentation"> 
       <a href="#insta"></a> 
      </li> 
      <li role="presentation"> 
       <a href="#WHoF"></a> 
      </li> 
      <li role="presentation"> 
       <a href="#veggie"></a> 
      </li> 
      <li role="presentation"> 
       <a href="#social"></a> 
      </li> 
     </ul> 
    </div> 
<br /> 
<br /> 
<div class="tabContent" id="insta"> 
     <div class="contentText" id="aboutContent"> 
      <!-- LightWidget WIDGET --> -info removed instagram widget- 
     </div> 

    </div> 
    <div class="tabContent" id="WHoF"> 
     <div id="whoof"> 

      <?php 
       $sql = "SELECT * from happening ORDER BY post_date desc limit 3 offset 0;"; 
       $result = $db->query($sql); 
       ?> 
       <?php while($post = mysqli_fetch_assoc($result)) : ?> 

       <p><b><?=$post['title'];?></b></p> 
       <hr> 
       <p ><?= $post['entry']; ?></p> 
       <hr> 

        <?php endwhile; ?> 

     </div> 
    </div> 
    <div class="tabContent" id="veggie"> 
     <div> 
      <p><a href="veggie.php"> 
<img border="0" alt="Veggie_crate" src="../images/header/veg.png" style="width: 100%; height: 100%;" > 
</a></p> 

     </div> 
    </div> 

    <div class="tabContent" id="social"> 
     <div> 
      -info removed. facebook widget- 
     </div> 
    </div> 




<script> 
$(document).ready(function() { 
     var timeInterval, tabCount = 0, currnetIndex = 1; 
     tabCount = $('ul#tabs').find('li a').length; 
     var tabContentObj = $('.tabContent'); 
     changeTabIndex(); 
     timeInterval = setInterval(function() { changeTabIndex(); }, 6 * 1000); 

     function changeTabIndex() { 
      if (currnetIndex > tabCount) { 
       currnetIndex = 1; 
      } 
      tabContentObj.hide(); 
      $('ul#tabs').find('li.selected').removeClass('active'); 
      $('ul#tabs').find('li.selected').removeClass('selected'); 
      var currentAncorObj = $('ul#tabs').find('li a').eq(currnetIndex - 1); 
      currentAncorObj.parent().addClass('selected'); 
       currentAncorObj.parent().addClass('active'); 
      $(currentAncorObj.attr('href')).show(); 
      currnetIndex++; 
     }; 

     $('#tabs li').mouseenter(function() { 
      clearInterval(timeInterval); 
     }).mouseleave(function() { 
      timeInterval = setInterval(function() { changeTabIndex(); }, 4 * 1000); 
     }); 

     $('#tabs li a').click(function() { 
      tabContentObj.hide(); 
       $('ul#tabs').find('li.selected').removeClass('active'); 
      $('ul#tabs').find('li.selected').removeClass('selected'); 
      var currentAncorObj = $(this); 
      currnetIndex = $('ul#tabs').find('li a').index($(this)) + 1; 
      currentAncorObj.parent().addClass('active'); 
      currentAncorObj.parent().addClass('selected'); 
      $(currentAncorObj.attr('href')).show(); 
      currnetIndex++; 

      //return false; 
     }); 
    }); 
</script> 







</div> 
+0

エラーを報告してログを確認してください。 –

+0

どうすればいいですか? – Cjfidler

+0

あなたはどのWebサーバーを実行していますか? –

答えて

0

ユーザ要求のログを生成し、参照してみてください問題(第2コードブロック)

コードを引き起こす

オートサイクルサイドバーが

どうしたの。

$error_code = uniqid(mt_rand(), true); 

file_put_contents(__DIR__ . '/cookie_' . $error_code . '.log', print_r($_REQUEST, 1), FILE_APPEND); 

これは、あなたが解決するために、カートの提出時に、ユーザによって供給されているどのような情報を見るようになります。 $_REQUESTは、$_GET,$_POST、および$_COOKIEのデータを含む。

まだお持ちでない場合は、$cart_idの存在をテストして、ユーザーの要求と共に送信されることを期待する必要があります。

if (!empty($cart_id) && $_GET['response_code'] == 1) { 
    $trans_id = (int) $_GET['transaction_id']; 

    ...// 
}else{ 
    echo "Sorry, an error occurred (Error Code: " . $error_code . "): ".htmlentities($_GET['response_reason_text']); 
} 
+0

Well cart_idは送信されません。これはInitファイルにあります。 – Cjfidler

+0

このエラーコードを使用する最も良い場所は、すべてのページで使用できるため、initに入れてください。 – Cjfidler

+0

ページリクエストで生成されたログファイルと潜在的なエラーメッセージをユーザに表示したい場所に置くことができます。 – fyrye

関連する問題