analysis.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace loyalsoft;
  3. # 导入主代码库
  4. include_once __DIR__ . '/../../main.php';
  5. # 设置时区为中国区(东8区)
  6. date_default_timezone_set("PRC");
  7. set_time_limit(0); # cli 不限定执行时间
  8. /**
  9. * Description of analysis
  10. * @version
  11. * 1.0.0 Created at 2018-1-22. by --gwang
  12. * @author gwang (mail@wanggangzero.cn)
  13. * @copyright ? 2018-1-22, SJZ LoyalSoft Corporation & gwang. All rights reserved.
  14. */
  15. class analysis {
  16. public static function exec($uid) {
  17. $user = UserProc::getUserInfo(gMem(), 1, $uid);
  18. // var_dump($user);
  19. $ts = $user->game->baseInfo->lastSaveTs - $user->game->baseInfo->firstLogin;
  20. // var_dump($user);
  21. $str_len = '1分钟';
  22. if ($ts < 60) {
  23. $str_len = '1分钟以内';
  24. } else if ($ts < 300) {
  25. $str_len = '5分钟以内';
  26. } else if ($ts < 600) {
  27. $str_len = '10分钟以内';
  28. } else if ($ts < 1800) {
  29. $str_len = '30分钟以内';
  30. } else {
  31. $str_len = '30分钟以上';
  32. }
  33. gMem()->zincrby('staytime', $str_len, 1);
  34. // 接下来分析每个玩家数据中的具体数据, 比如有几个英雄
  35. // $hn = count((array) $user->game->heros->collectHeros);
  36. // gMem()->zincrby('英雄数量', $hn, 1);
  37. //
  38. // 比如, 第一次登陆时间和最后一次写入时间之间的差值(留存时长)
  39. // 最后一次操作玩家数据上没法估计
  40. // 统计下历史消耗金币数量, 历史 消耗钻石数量, ...
  41. // 钻石和金币的流向...
  42. }
  43. }
  44. $lines = file('dd.csv');
  45. // 在数组中循环,显示 HTML 的源文件并加上行号。
  46. $n = 0;
  47. foreach ($lines as $line_num => $line) {
  48. $uid = trim($line);
  49. $uid = ltrim(trim($uid, "\""), "\"");
  50. // var_dump(ltrim(trim($uid, "\""), "\""));
  51. // gMem()->zincrby('staytime', 'len', 1);
  52. analysis::exec($uid);
  53. $n++;
  54. if ($n % 500 == 0) {
  55. echo $n . PHP_EOL;
  56. }
  57. // break;
  58. }
  59. echo $n;