function.php 5.3 KB

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