php後台操作以及一些減緩伺服器壓力的問題

來源:互聯網
上載者:User

標籤:blank   init   nbsp   伺服器   成功   數值   ber   api   head   

上次提到一個投票系統,做了一個重新導向解決了,一個授權複用的問題,昨天投票系統正式投入使用;測試的時候沒有問題,上線後出現了一點小問題,

  一:php頁面參數接受和php中 switch 那個先執行?

    答案: 是switch先執行

  例:在index.php頁面 

      header("location:/api/wx.php?action=putprofile&accessToken=".$accessToken."&openId=".$openId."&headImgUrl=".$headImgUrl."&nickName=".$nickName);

      實現跳轉到wx.php頁面裡面帶著幾個參數 accessToken openId headImgUrl nickName  (php中字元連結符 是 "  .  " );

  下面我在wx.php頁面進行接收

        

  $accessToken= $_GET["accessToken"];
  $openid= $_GET["openId"];
  $headimgurl= $_GET["headImgUrl"];
  $nickname = $_GET["nickName"];

  //接收參數

  switch($_GET[‘action‘]){

    case "initprofile":
      initprofile();
    break;
    case "getprofile";
      getprofile();
    break;
    case "putprofile";
      putprofile();
    break;
  }

  

  function putprofile($openid, $nickname, $headimgurl){
 
    //echo "<script>alert(‘$openid‘);</script>";
    //echo "<script>alert(‘$headimgurl‘);</script>";
    //echo "<script>alert(‘$nickname‘);</script>";
    //die("INSERT INTO v2016_member (mem_nickname, mem_photo, mem_openid, mem_regdate) VALUES({$nickname}, {$headimgurl},     {$$openid}, {$time}");
    //$user = db_exec_query("SELECT mem_id FROM v2016_member WHERE mem_openid = ‘{$openid}‘ LIMIT 1");
    $sql = "SELECT mem_id FROM v2016_member WHERE mem_openid = ‘{$openid}‘ LIMIT 1";
    $result = mysql_query($sql);
    if(!$row = mysql_fetch_assoc($result)){
      //echo "<script>alert(‘gengxin‘);</script>";
    $time = time();
    $ins_id = db_exec_update("INSERT INTO v2016_member (mem_nickname, mem_photo, mem_openid, mem_regdate) VALUES(‘{$nickname}‘,     ‘{$headimgurl}‘, ‘{$openid}‘, ‘{$time}‘); ");
    }
    $user = db_exec_query("SELECT * FROM v2016_member WHERE mem_openid = ‘{$openid}‘ LIMIT 1");
    $info = array(
    ‘mem_id‘ => $user[0][‘mem_id‘],
    ‘mem_nickname‘ => json_decode($user[0][‘mem_nickname‘]),
    ‘mem_photo‘ => $user[0][‘mem_photo‘],
    ‘mem_openid‘ => $user[0][‘mem_openid‘],
    );
    //修改php中session的預設時間
    //$lifeTime = 46 * 3600;
    //session_set_cookie_params($lifeTime);
    session_start();
    $_SESSION[‘user‘] = $info;
    header("location:/band.php");
  }

  如上述代碼所示,開始我以為在執行  putprofile()這個函數的時候 上面那四個參數已經拿到了呢,當時就是往資料庫裡插不進去,我在putprofile()alert 了一下那四個參數才知道原來在函數執行的時候還沒執行

  $accessToken= $_GET["accessToken"];
  $openid= $_GET["openId"];
  $headimgurl= $_GET["headImgUrl"];
  $nickname = $_GET["nickName"];

  這些代碼可把我坑壞了,沒辦法後台把這些擷取參數的代碼放到了putprofile()裡面才成功的把欄位插入到了資料庫裡面,

  原因是:switch的比$_GET先執行

  二:SESSION的預設儲存時間

    php中SESSION的預設儲存時間是 1440秒 意思就是時間一過這個緩衝就會被清掉

    可以手動去修改兩種方法:

      1:去伺服器配置php環境的一個ini的檔案裡找到 session.gc_maxlifetime 改成你想要的數值就可以了,建議不要改的太長,以免造成伺服器記憶體飽滿,響應過慢或者直接癱瘓

       2:代碼實現:

        // $lifeTime = 46 * 3600;
        //session_set_cookie_params($lifeTime); 

  三:伺服器壓力問題:

    這個問題很廣很多情況下都會造成伺服器壓力過大,造成響應過慢,對於寫代碼的程式猿來說要做的就是把代碼最佳化,至於怎麼最佳化減輕伺服器壓力,太複雜就不多說了,可以自行百度;

   接下來說說我遇到的問題:

      1:我的資料庫是操作是php MYSQL代碼實現的;

      2: 多餘的代碼很多

      3:裡面有比較多的 SELECT , update等一些操作,沒有做到函數複用;

      4:伺服器運行記憶體也比較小;

    在上述幾個情況下,一開始代碼沒什麼問題,後來隨著使用者越來越多,越來越多,我突然發現開啟這個投票系統的回應時間變長了,我ping了一下看了一個速度

        

     發現這個IP的回應時間  最短 7ms 最長 13ms 平均8ms 這也太慢了,對於使用者來說,體驗太不好了,一直反映開啟太慢

     後來我就檢查My Code

      發現裡面有很多的SELECT , update等一些操作,並且多餘的代碼比較多,要知道本身MYSQL本身會佔用較大虛擬記憶體,再加上資料庫操作很耗記憶體,就造成了伺服器壓力比較大,回應時間變長的後果;

      所以在php頁面中藥盡量減少資料庫的操作,同事對代碼做良好的最佳化,不然就會造成伺服器壓力大,響應慢的結果。

    就這些吧,今天早上我7點跑到公司來維護代碼,也是不容易啊!!

      快五一了,預祝快樂!!!!

      

        

    

    

 

 

      

php後台操作以及一些減緩伺服器壓力的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.