update_user_active_time.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. #已经废弃
  3. require_once '../config.php';
  4. date_default_timezone_set("UTC");
  5. $logfile = "update_user_active_time_last.txt";
  6. $last = file_get_contents($logfile);
  7. $start = strtotime($last . " +1 day");
  8. $end = strtotime($last . " +2 day");
  9. $today = strtotime("today");
  10. $dbh = new PDO(_FILE_DB_USER_ACTIVE_, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  11. $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  12. $dbh_index = new PDO(_FILE_DB_USER_ACTIVE_INDEX_, _DB_USERNAME_, _DB_PASSWORD_, array(PDO::ATTR_PERSISTENT => true));
  13. $dbh_index->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  14. /* 开始一个事务,关闭自动提交 */
  15. $dbh_index->beginTransaction();
  16. $query = "INSERT INTO "._TABLE_SRC_USER_OPERATION_DAILY_." (user_id, date_int , duration , hit) VALUES (?, ?, ? , ?)";
  17. $sth_index = $dbh_index->prepare($query);
  18. $runing = $last;
  19. while ($end <= $today) {
  20. $runing = gmdate("Y-m-d", $start);
  21. echo "runing:" . $runing . "\n";
  22. # do one day
  23. $query = "SELECT user_id, sum(duration) as time , sum(hit) as hit FROM "._TABLE_SRC_USER_OPERATION_FRAME_." WHERE end between ? and ? group by user_id ";
  24. $stmt = $dbh->prepare($query);
  25. $stmt->execute(array($start * 1000, $end * 1000));
  26. while ($result = $stmt->fetch(PDO::FETCH_ASSOC)) {
  27. $user_id = $result["user_id"];
  28. $time = $result["time"];
  29. $hit = $result["hit"];
  30. $sth_index->execute(array($user_id, $start * 1000, $time, $hit));
  31. echo "$user_id - $time - $hit \n";
  32. }
  33. $start = $end;
  34. $end = strtotime(gmdate("Y-m-d", $end) . " +1 day");
  35. }
  36. $dbh_index->commit();
  37. if (!$sth_index || ($sth_index && $sth_index->errorCode() != 0)) {
  38. /* 识别错误且回滚更改 */
  39. $sth_index->rollBack();
  40. $error = $dbh_index->errorInfo();
  41. echo "error:" . $error[2] . "\n";
  42. }
  43. echo "run until:" . $runing . "\n";
  44. echo file_put_contents($logfile, $runing);