使用PHP Array中的file_get_contents来更新MySQL

时间:2017-12-05 01:55:32

标签: php mysql arrays database file-get-contents

我有一个数据库包含我的员工的ID和名称(数据库1):

--------------
| ID | name  |
--------------
| 1  | Mr.AA |
| 2  | Mr.AB |
|... | ...   |
| 78 | Mr.CZ |
--------------

然后我的同事每天有2年的工作人员缺勤数据库(数据库2):

Tablename: Table_for_Mr.AA
--------------------------
| ID | date       | work |
--------------------------
| 1  | 2016-01-01 | Yes  |
| 2  | 2016-01-02 | Yes  |
| 3  | 2016-01-03 | No   |
|... | ...        | ...  |
|730 | 2017-12-31 | Yes  |
--------------------------

由于我们的协议,我们自己拥有每个数据库(2方),因此每个数据库都存储在不同的服务器中。 最近我需要从我的网站上显示DATABASE 2的数据,我可以让我的同事制作PHP文件,返回每个名字的数组(www.colleaguewebsite / staff / absence.php?name = Mr.AA)

我已经在我的服务器中创建了新的'workstat'数据库(DATABASE 3),并提供了以下详细信息:

---------------------------------
| ID | date       | Name | work |
---------------------------------
| 1  | 2016-01-01 |     
| 2  | 2016-01-02 |
| 3  | 2016-01-03 |
|... | ...        |
---------------------------------

这是我能做的最好的事情:

$sourceURL = 'www.colleaguewebsite/staff/absence.php'

$sql1= $conn->query("select * FROM staff ");
while($row_1 = $sql1->fetch_array()){
    $name= $row_1 ['name'];

    //getting the absence detail from each staff
    $json_1 = file_get_contents($sourceURL.'?name='.$name);
    $data_1 = json_decode($json_1,true);
    foreach($data_1 as $value_1){
        $date = $value_1['date'];
        $work = $value_1['work'];

        //if the correspondence date is exist then update, otherwise add
        $sql_2 = $conn->query("select * FROM workstat WHERE date='$date' AND name='$name");
        if ($sql_2->num_rows > 0){
            $update=$conn->query("UPDATE workstat set name='$name', work='$work' WHERE date='$date' ");
        }else{
            $addnew=$ob->query("INSERT INTO availability (date, name, work) VALUES ('$date', '$name', '$work'
        }
    }   
}

但是,我有一些困扰的事情:

  1. 执行此脚本所需的时间非常长,大多超过90秒的时间。
  2. 脏数据库。每个名称我将有730行数据(每天),所以我的数据库3将有730 * 78人= 56.940行,重复日期(2017-01-01 ... 2017-12-31为Mr.AA, 2017-01-01 ... 2017-12-31为Mr.AB等...)。
  3. 如何在表格设计和加载时间中优化代码? 另一种方法比file_get_contents还好,我希望它仍然是PHP。

0 个答案:

没有答案