function.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. require_once "../public/function.php";
  3. function do_sync($param)
  4. {
  5. if (isset($_GET["op"])) {
  6. $op = $_GET["op"];
  7. } else if (isset($_POST["op"])) {
  8. $op = $_POST["op"];
  9. } else {
  10. echo "error: no op";
  11. return (false);
  12. }
  13. $PDO = new PDO("" . $param->database, "", "", array(PDO::ATTR_PERSISTENT => true));
  14. $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  15. switch ($op) {
  16. case "sync":
  17. {
  18. if(isset($_POST["time"])){
  19. $time = $_POST["time"];
  20. $query = "SELECT {$param->uuid} as guid, {$param->modify_time} as modify_time from {$param->table} where {$param->modify_time} > '{$time}' order by {$param->modify_time} ASC limit 0,1000";
  21. $stmt = $PDO->query($query);
  22. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  23. $iFetch = count($Fetch);
  24. echo (json_encode($Fetch, JSON_UNESCAPED_UNICODE));
  25. }
  26. else if(isset($_POST["id"])){
  27. $query = "SELECT {$param->uuid} as guid, {$param->modify_time} from {$param->table} where {$param->uuid} in ({$_POST["id"]}) limit 0,1000";
  28. $stmt = $PDO->query($query);
  29. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  30. $iFetch = count($Fetch);
  31. echo (json_encode($Fetch, JSON_UNESCAPED_UNICODE));
  32. }
  33. break;
  34. }
  35. case "get":
  36. {
  37. if (isset($_GET["id"])) {
  38. $id = $_GET["id"];
  39. } else if (isset($_POST["id"])) {
  40. $id = $_POST["id"];
  41. } else {
  42. return (false);
  43. }
  44. $arrId = json_decode($id);
  45. $queryId = "('";
  46. foreach ($arrId as $one) {
  47. $queryId .= $one . "','";
  48. }
  49. $queryId = substr($queryId, 0, -2) . ")";
  50. $query = "SELECT * FROM {$param->table} WHERE {$param->uuid} in {$queryId}";
  51. $stmt = $PDO->query($query);
  52. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  53. echo (json_encode($Fetch, JSON_UNESCAPED_UNICODE));
  54. return (true);
  55. break;
  56. }
  57. case "insert":
  58. {
  59. echo "正在准备插入记录<br>";
  60. if (isset($_POST["data"])) {
  61. $data = $_POST["data"];
  62. } else {
  63. echo "没有数据<br>";
  64. return (false);
  65. }
  66. // 开始一个事务,关闭自动提交
  67. $PDO->beginTransaction();
  68. $query = "INSERT INTO {$param->table} (";
  69. foreach ($param->insert as $row) {
  70. $query .= "'" . $row . "',";
  71. }
  72. $query .= "'receive_time') VALUES ( ";
  73. for ($i = 0; $i < count($param->insert); $i++) {
  74. $query .= " ?, ";
  75. }
  76. $query .= " ? )";
  77. $arrData = json_decode($data, true);
  78. $stmt = $PDO->prepare($query);
  79. foreach ($arrData as $oneParam) {
  80. $newRow = array();
  81. foreach ($param->insert as $row) {
  82. $newRow[] = $oneParam["{$row}"];
  83. }
  84. $newRow[] = mTime();
  85. $stmt->execute($newRow);
  86. }
  87. // 提交更改
  88. $PDO->commit();
  89. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  90. $error = $PDO->errorInfo();
  91. echo "error - $error[2] <br>";
  92. return (false);
  93. } else {
  94. $count = count($arrData);
  95. echo "INSERT $count recorders." . "<br>";
  96. return (true);
  97. }
  98. break;
  99. }
  100. case "update":
  101. {
  102. echo "更在准备更新数据<br>";
  103. if (isset($_POST["data"])) {
  104. $data = $_POST["data"];
  105. } else {
  106. echo "没有输入数据<br>";
  107. return (false);
  108. }
  109. $arrData = json_decode($data, true);
  110. $query = "UPDATE {$param->table} SET ";
  111. foreach ($param->update as $row) {
  112. $query .= "{$row} = ? ,";
  113. }
  114. $query .= "{$param->receive_time} = ? where {$param->uuid} = ? ";
  115. $stmt = $PDO->prepare($query);
  116. // 开始一个事务,关闭自动提交
  117. try {
  118. $PDO->beginTransaction();
  119. foreach ($arrData as $one) {
  120. $newRow = array();
  121. foreach ($param->update as $row) {
  122. $newRow[] = $one["{$row}"];
  123. }
  124. $newRow[] = mTime();
  125. $newRow[] = $one["{$param->uuid}"];
  126. $stmt->execute($newRow);
  127. }
  128. // 提交更改
  129. $PDO->commit();
  130. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  131. $error = $PDO->errorInfo();
  132. echo "error - $error[2] <br>";
  133. return (false);
  134. } else {
  135. $count = count($arrData);
  136. echo "INSERT $count recorders." . "<br>";
  137. return (true);
  138. }
  139. } catch (Exception $e) {
  140. $PDO->rollback();
  141. echo "Failed:" . $e->getMessage() . "<br>";
  142. return (false);
  143. }
  144. break;
  145. }
  146. default:
  147. break;
  148. }
  149. }