在高容量流量下改善服务器响应的延迟

时间:2015-06-08 04:11:15

标签: php android mysql high-availability high-load

我有一个电子商务应用程序,当有5到10个用户使用它时,它可以正常运行。

但是当它被50-60人使用时它变得非常慢。

目前我正在使用MySQL& PHP。

我正在调用具有.php连接代码的MySQL文件。从那里我得到JSON响应。

以下是我的代码:

    class Items extends AsyncTask<String, String, String> {

    protected String doInBackground(String... args) {
            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("id", Itemid));
            // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url_allitems, "GET",
                    params);



            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {

                    products = json.getJSONArray(TAG_ITEMS);


                    for (int i = 0; i < products.length(); i++) {

                        JSONObject c = products.getJSONObject(i);

                        // Storing each json item in variable
                        String id = c.getString(TAG_ITEMID);
                        String name = c.getString(TAG_NAME);


                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(TAG_PID, id);
                        map.put(TAG_NAME, name);


                        // adding HashList to ArrayList
                        productsList.add(map);
}

这是我的PHP代码:

  $result = mysql_query("SELECT * FROM item_master") ;

// check for empty result
if (mysql_num_rows($result) > 0) {
    $response["items"] = array();

    while ($row = mysql_fetch_array($result)) {
        // temp user array
        $item = array();
        $item["id"] = $row["id"];
        $item["code"] = $row["code"];
        $item["name"] = $row["name"];
        $item["description"] = $row["description"];
        $item["price"] = $row["price"];
        $item["image1"] = $row["image1"];

        // push single product into final response array
        array_push($response["items"], $product);

    }
    // success
    $response["psuccess"] = 1;
   ....
}

那么在这种情况下优化的最佳方法是什么?当超过1000个用户访问此应用时,应用应该响应并快速加载项目。

1 个答案:

答案 0 :(得分:2)

在服务器端,您需要研究管理大量连接的技术,例如enabling servers to handle high-volume traffic,以及dynamic load balancing等网络级问题。

在客户端,您可以Volley使用okHttp。您还必须启用okHttp on the server side才能正常使用。

<强>参考文献:

1。 Tactics for using PHP in a high-load site

2。 Separating dynamic and static content on high traffic website

3。 How to implement Android Volley with OkHttp 2.0?

4。 Using SPDY on Your Web Server