使用PHP编写的Web服务在Android和iOS应用程序中复制/转储服务器数据库表数据的智能方法

使用PHP编写的Web服务在Android和iOS应用程序中复制/转储服务器数据库表数据的智能方法,php,android,ios,performance,web-services,Php,Android,Ios,Performance,Web Services,我的服务器数据库中有30多个表。因此,需要获取表中的所有数据时,应该使用一个针对Android的web服务,即iOS应用程序来检索 考虑以下几点: 我在服务器数据库的不同表中存储了一些统计信息丰富的utf-8数据 所以我需要将所有表数据合并成json/其他格式 我可以在应用程序端使用web服务获得json/其他格式 例如(如果我们考虑JSON),我们考虑三个表: 表A(身份证、姓名、地址) 表B(键、值) 表C(标题、价格) 在这种情况下,web服务应返回以下响应: [ {

我的服务器数据库中有30多个表。因此,需要获取表中的所有数据时,应该使用一个针对Android的web服务,即iOS应用程序来检索

考虑以下几点:

  • 我在服务器数据库的不同表中存储了一些统计信息丰富的utf-8数据
  • 所以我需要将所有表数据合并成json/其他格式
  • 我可以在应用程序端使用web服务获得json/其他格式

例如(如果我们考虑JSON),我们考虑三个表:

  • 表A(身份证、姓名、地址)

  • 表B(键、值)

  • 表C(标题、价格)

在这种情况下,web服务应返回以下响应:

[
    {
        "A": [
            {
                "id": 1,
                "name": "ABC",
                "address": "XYZ"
            },
            {
                "id": 2,
                "name": "ABC",
                "address": "XYZ"
            }
        ]
    },
    {
        "B": [
            {
                "key": "test",
                "value": "XYZ"
            },
            {
                "key": "test1",
                "value": "LMN"
            }
        ]
    },
    {
        "C": [
            {
                "title": "PQR",
                "price": 20.5
            },
            {
                "title": "XYZ",
                "price": 20
            }
        ]
    }
]
所以

  • 如何用PHP编写Web服务,返回上面示例中显示的json

    (注意:我已经尝试过在每个必需的表上点击单独的查询,但返回数据需要2-3分钟)

  • Web服务最多应在5-7秒内返回数据


  • 你是说像这样的

        //queries
        $sql1 = "SELECT * from A";
        $sql2 = "SELECT * from B";
        $sql3 = "SELECT * from C";
    
        //prepare
        $stmt1 = $dbh->prepare( $sql1 );
        $stmt2 = $dbh->prepare( $sql2 );
        $stmt3 = $dbh->prepare( $sql3 );
    
        //execute
        $stmt1->execute();
        $stmt2->execute();
        $stmt3->execute();
    
        //get results
        $result1 = $stmt1->fetchAll( PDO::FETCH_ASSOC );
        $result2 = $stmt2->fetchAll( PDO::FETCH_ASSOC );
        $result3 = $stmt3->fetchAll( PDO::FETCH_ASSOC );
    
        //convert to json
        $json1 = json_encode($result1, true);
        $json2 = json_encode($result2, true);
        $json3 = json_encode($result3, true);
    
        //merge jsons
        $json = json_encode(array_merge($json1, $json2, $json3));
    
        //echo result
        echo $json;
    

    你是说像这样的

        //queries
        $sql1 = "SELECT * from A";
        $sql2 = "SELECT * from B";
        $sql3 = "SELECT * from C";
    
        //prepare
        $stmt1 = $dbh->prepare( $sql1 );
        $stmt2 = $dbh->prepare( $sql2 );
        $stmt3 = $dbh->prepare( $sql3 );
    
        //execute
        $stmt1->execute();
        $stmt2->execute();
        $stmt3->execute();
    
        //get results
        $result1 = $stmt1->fetchAll( PDO::FETCH_ASSOC );
        $result2 = $stmt2->fetchAll( PDO::FETCH_ASSOC );
        $result3 = $stmt3->fetchAll( PDO::FETCH_ASSOC );
    
        //convert to json
        $json1 = json_encode($result1, true);
        $json2 = json_encode($result2, true);
        $json3 = json_encode($result3, true);
    
        //merge jsons
        $json = json_encode(array_merge($json1, $json2, $json3));
    
        //echo result
        echo $json;
    

    您应该检查这2-3分钟中有多少时间花在网络传输时间上,而不是服务器生成数据上。如果几乎所有的时间都是在网络上,那么你就无法加快速度。无论服务器数据收集速度有多快,您不能更改传输速度。@MarcB我在5 MBPS网络上测试了上述场景,大约需要2-3分钟,在2G网络上大约需要9-10分钟。因此,我认为这会对Apps的用户体验造成不良影响。您应该检查这2-3分钟中有多少用于网络传输时间,而不是服务器生成数据。如果几乎所有的时间都是在网络上,那么你就无法加快速度。无论服务器数据收集速度有多快,都不能改变传输速度。@MarcB我在5 MBPS网络上测试了上述场景,大约需要2-3分钟,在2G网络上大约需要9-10分钟。因此我认为这会影响appYes的糟糕用户体验。是的,我做了如上所述的事情是的,我做了如上所述的事情