analysis.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. {
  17. public static function exec($uid)
  18. {
  19. $user = UserProc::getUserInfo(gMem(), 1, $uid);
  20. // var_dump($user);
  21. $ts = $user->game->lastSaveTs - $user->game->firstLogin;
  22. // var_dump($user);
  23. $str_len = '1分钟';
  24. if ($ts < 60) {
  25. $str_len = '1分钟以内';
  26. } else if ($ts < 300) {
  27. $str_len = '5分钟以内';
  28. } else if ($ts < 600) {
  29. $str_len = '10分钟以内';
  30. } else if ($ts < 1800) {
  31. $str_len = '30分钟以内';
  32. } else {
  33. $str_len = '30分钟以上';
  34. }
  35. gMem()->zincrby('staytime', $str_len, 1);
  36. // 接下来分析每个玩家数据中的具体数据, 比如有几个英雄
  37. // $hn = count((array) $user->game->heros->collectHeros);
  38. // gMem()->zincrby('英雄数量', $hn, 1);
  39. //
  40. // 比如, 第一次登陆时间和最后一次写入时间之间的差值(留存时长)
  41. // 最后一次操作玩家数据上没法估计
  42. // 统计下历史消耗金币数量, 历史 消耗钻石数量, ...
  43. // 钻石和金币的流向...
  44. }
  45. }
  46. $lines = file('dd.csv');
  47. // 在数组中循环,显示 HTML 的源文件并加上行号。
  48. $n = 0;
  49. foreach ($lines as $line_num => $line) {
  50. $uid = trim($line);
  51. $uid = ltrim(trim($uid, "\""), "\"");
  52. // var_dump(ltrim(trim($uid, "\""), "\""));
  53. // gMem()->zincrby('staytime', 'len', 1);
  54. analysis::exec($uid);
  55. $n++;
  56. if ($n % 500 == 0) {
  57. echo $n . PHP_EOL;
  58. }
  59. // break;
  60. }
  61. echo $n;