123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- require_once(APP_PATH."/protected/vendors/tencent/XingeApp.php");
- class HourlyWorkCommand extends CConsoleCommand{
- public function run($args) {
- error_reporting(E_ERROR);
- ini_set('memory_limit', '256M');
- set_time_limit(0);
- //用户活跃度异步任务
- $list = new ARedisList('user_active_list');
- while ($list->getCount() > 0) {
- $key = $list->pop();
- try {
- Service::factory('LevelService')->addActive($key);
- } catch (Exception $e) {
- continue;
- }
- }
- $end_time = time();
- $start_time = $end_time - 3600*2;
- $criteria = new EMongoCriteria();
- $criteria->time('>=',$start_time);
- $criteria->time('<',$end_time);
- $cursor = Topic::model()->findAll($criteria);
- $i=1;
- $docs_to_upload = array();
- foreach ($cursor as $topic) {
- $i++;
- if($i%200 == 0){
- $result = Service::factory('SearchService')->addTopic($docs_to_upload);
- var_dump($result);
- sleep(3);
- $docs_to_upload = array();
- }
- $item = array();
- $item['cmd'] = 'update';
- //添加文档内容
- $item["fields"] = array(
- 'id'=>(string)$topic->_id,
- "content" => $topic->content,
- "search_rank" => $topic->search_rank,
- 'status'=>$topic->status,
- 'time'=>$topic->time
- );
- $docs_to_upload[] = $item;
- }
- if(!empty($docs_to_upload)){
- $result = Service::factory('SearchService')->addTopic($docs_to_upload);
- var_dump($result);
- }
- $docs_to_upload = array();
- echo "end_topic:";
- $end_time = time();
- $start_time = $end_time - 3600*2;
- $criteria = new EMongoCriteria();
- $criteria->time('>=',$start_time);
- $criteria->time('<',$end_time);
- $cursor = Post::model()->findAll($criteria);
- $i=1;
- $docs_to_upload = array();
- foreach ($cursor as $post) {
- $i++;
- if($i%200 == 0){
- $result = Service::factory('SearchService')->addPost($docs_to_upload);
- var_dump($result);
- sleep(3);
- $docs_to_upload = array();
- }
- $item = array();
- $item['cmd'] = 'update';
- //添加文档内容
- $item["fields"] = array(
- 'id'=>(string)$post->_id,
- "content" => $post->content,
- 'time'=>$post->time,
- 'status'=>$post->status,
- );
- $docs_to_upload[] = $item;
- }
- if(!empty($docs_to_upload)){
- $result = Service::factory('SearchService')->addPost($docs_to_upload);
- }
- $docs_to_upload = array();
- echo "end_post:";
- var_dump($result);
- $criteria = new EMongoCriteria();
- $start_time = $end_time - 3600*2;
- $criteria->register_time('>=',$start_time);
- $criteria->register_time('<',$end_time);
- $cursor = RUser::model()->findAll($criteria);
- $i=1;
- $docs_to_upload = array();
- foreach ($cursor as $user) {
- $i++;
- if($i%100 == 0){
- $result = Service::factory('SearchService')->addUser($docs_to_upload);
- var_dump($result);
- sleep(3);
- $docs_to_upload = array();
- }
- $item = array();
- $item['cmd'] = 'ADD';
- //添加文档内容
- $item["fields"] = array(
- 'id'=>(string)$user->_id,
- "user_name" => $user->user_name,
- "status" => $user->status,
- );
- $docs_to_upload[] = $item;
- }
- if(!empty($docs_to_upload)){
- $result = Service::factory('SearchService')->addUser($docs_to_upload);
- }
- $docs_to_upload = array();
- echo "end_user:";
- var_dump($result);
- //用户信息更新,每小时更新
- $list = new ARedisList('user_info_update');
- while ($list->getCount() > 0) {
- $res = $list->pop();
- $syncData = unserialize($res);
- try {
- $user_obj = RUser::get(new MongoId($syncData['user_id']));
- $user_obj->app_client_id = $syncData['app_client_id'];
- $user_obj->device_id = $syncData['device_id'];
- $user_obj->channel = $syncData['channel'];
- $user_obj->app_version = $syncData['app_version'];
- $user_obj->phone_type = $syncData['phone_type'];
- $user_obj->os_version = $syncData['os_version'];
- $user_obj->last_visit_time = $syncData['last_visit_time'];
- $user_obj->update(array('last_visit_time','app_version','app_client_id','device_id','channel','phone_type','os_version'),true);
- $getui = Service::factory('PushService');
- $cids = $getui->queryCID($syncData['user_id']);
- if($cids){
- $tags = [];
- foreach ($cids as $cid){
- $res = $getui->getCidTags($cid);
- $new_tags = preg_replace('/\d+(\.\d+){0,2}/',$syncData['app_version'],$res);
- $new_tags = explode(' ',$new_tags);
- $res = $getui->setTag($cid,$new_tags);
- var_dump($res);
- }
- }
- } catch (Exception $e) {
- continue;
- }
- }
-
- }
- }
|