Project.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace Manage\Src;
  3. use Dever;
  4. use Dever\Loader\Project as Config;
  5. use Dever\Routing\Input;
  6. class Project
  7. {
  8. /**
  9. * get
  10. *
  11. * @return string
  12. */
  13. public function get()
  14. {
  15. $list = Config::read();
  16. //unset($list['manage']);
  17. /*
  18. 取消排序,放到数据表中排序
  19. $order = array();
  20. foreach($list as $v)
  21. {
  22. $order[] = $v['order'];
  23. }
  24. array_multisort($order, SORT_DESC, $list);
  25. */
  26. return $list;
  27. }
  28. /**
  29. * 生成key->value的形式
  30. *
  31. * @return string
  32. */
  33. public function key()
  34. {
  35. $list = Config::read();
  36. //unset($list['manage']);
  37. return $list;
  38. }
  39. /**
  40. * set
  41. *
  42. * @return string
  43. */
  44. public function set()
  45. {
  46. $config = $this->get();
  47. $key = Input::get('project');
  48. $index = Input::get('index', 'lang');
  49. $value = Input::get('value');
  50. Config::update($key, $index, $value);
  51. }
  52. /**
  53. * name
  54. *
  55. * @return string
  56. */
  57. public function name($key)
  58. {
  59. $project = Config::load($key);
  60. if ($project) {
  61. return $project['lang'];
  62. } else {
  63. return $key;
  64. }
  65. }
  66. /**
  67. * config
  68. *
  69. * @return string
  70. */
  71. public function config($key)
  72. {
  73. $project = Config::load($key);
  74. if ($project) {
  75. return $project;
  76. } else {
  77. return $key;
  78. }
  79. }
  80. /**
  81. * path
  82. *
  83. * @return string
  84. */
  85. public function path($key)
  86. {
  87. $project = Config::load($key);
  88. if ($project) {
  89. return $project['path'];
  90. } else {
  91. return $key;
  92. }
  93. }
  94. /**
  95. * setup
  96. *
  97. * @return string
  98. */
  99. public function setup($key)
  100. {
  101. $project = Config::load($key);
  102. if ($project) {
  103. return isset($project['setup']) ? $project['setup'] : $project['path'];
  104. } else {
  105. return $key;
  106. }
  107. }
  108. public function loop()
  109. {
  110. while (true) {
  111. $this->cron();
  112. sleep(10);
  113. }
  114. }
  115. /**
  116. * cron
  117. *
  118. * @return string
  119. */
  120. public function cron()
  121. {
  122. $time = time();
  123. # 获取所有的计划任务
  124. $data = Dever::db('manage/cron')->get(array('where_ldate' => $time));
  125. if ($data) {
  126. # 比如属于weixin项目的group_list
  127. # weixin.mazephp.com/data.group_list
  128. $time = time();
  129. foreach ($data as $k => $v) {
  130. Dever::daemon($v['interface'], $v['project']);
  131. $param['where_id'] = $v['id'];
  132. $param['set_ldate'] = $v['ldate'] + $v['time'];
  133. if ($param['set_ldate'] < $time) {
  134. $param['set_ldate'] = $time + $v['time'];
  135. }
  136. if ($v['time'] <= 0) {
  137. $param['set_state'] = 2;
  138. }
  139. Dever::db('manage/cron')->update($param);
  140. }
  141. }
  142. }
  143. /**
  144. * 将昨天的signature数据删除
  145. *
  146. * @return string
  147. */
  148. public function signature()
  149. {
  150. $time = time() - 86400;
  151. Dever::db('manage/signature')->deleteByDay(array('where_time' => $time));
  152. $path = Path::month('signature');
  153. $file = $path . 'signature_' . date('Y_m_d', $time);
  154. unlink($file);
  155. }
  156. }