stanley-king 7 éve
szülő
commit
dd0f976523

+ 11 - 0
core/framework/libraries/queue.php

@@ -22,6 +22,17 @@ class QueueClient
         }
         return self::$queuedb->push(serialize(array($key=>$value)));
     }
+
+    public static function async_push($key,$value,$period_minues = 0)
+    {
+        if($period_minues > 0) {
+            $model_cron = Model('cron');
+            $model_cron->addCron(['params' => serialize([$key=>$value]),'type' => 8,'exeid' => 0,'exetime' => time() + $period_minues * 60]);
+        }
+        else {
+            self::push($key,$value);
+        }
+    }
 }
 
 class QueueServer

+ 33 - 3
crontab/control/minutes.php

@@ -20,7 +20,6 @@ class minutesControl extends BaseCronControl
         $this->_web_index_update();
         $this->_cron_mail_send();
         Log::record(__FUNCTION__ . " end",Log::DEBUG);
-
     }
 
     /**
@@ -135,8 +134,17 @@ class minutesControl extends BaseCronControl
         $cron_array = array();
         $cronid = array();
 
-        foreach ($cron as $v) {
-            $cron_array[$v['type']][$v['exeid']] = $v;
+        $exeid = 1;
+        foreach ($cron as $v)
+        {
+            $type = intval($v['type']);
+            if($type == 8) {
+                $cron_array[$v['type']][$exeid] = $v;
+                $exeid++;
+            }
+            else {
+                $cron_array[$v['type']][$v['exeid']] = $v;
+            }
         }
         foreach ($cron_array as $k=>$v)
         {
@@ -298,4 +306,26 @@ class minutesControl extends BaseCronControl
         }
         return $cronid;
     }
+
+    private function _cron_8($cron = array())
+    {
+        $cronid = [];
+        foreach ($cron as $v)
+        {
+            $cronid[] = intval($v['id']);
+            $params = $v['params'];
+            if(!empty($params))
+            {
+                $params = unserialize($params);
+                if(is_array($params))
+                {
+                    foreach ($params as $key => $value) {
+                        QueueClient::push($key,$value);
+                    }
+                }
+            }
+        }
+
+        return $cronid;
+    }
 }

+ 5 - 4
helper/account_helper.php

@@ -311,6 +311,7 @@ class account_helper
         $member_info = Model('member')->getMemberInfoByID($member_id);
         $rewared_inviter = intval($member_info['rewared_inviter']);
         $inviter_id = intval($member_info['inviter_id']);
+
         if(session_helper::isapp() && session_helper::logined() && $rewared_inviter == 0) {
             QueueClient::push('onAsyncRegister',['user' => $member_id,'inviter' => $inviter_id]);
         }
@@ -342,13 +343,13 @@ class account_helper
         $fcode = new user_session\fcode();
         $fcode->onStatus();
 
-        QueueClient::push('onAsyncStatus',['member_id' => $member_id]);
-
         $rewared_inviter = intval($member_info['rewared_inviter']);
         $inviter_id = intval($member_info['inviter_id']);
+
         if(session_helper::isapp() && session_helper::logined() && $rewared_inviter == 0) {
-            QueueClient::push('onAsyncRegister',['user' => $member_id,'inviter' => $inviter_id]);
+            QueueClient::async_push('onAsyncRegister',['user' => $member_id,'inviter' => $inviter_id],2);
         }
+        QueueClient::async_push('onAsyncStatus',['member_id' => $member_id],1);
     }
 
     public static function onAsyncStatus($member_id)
@@ -392,7 +393,7 @@ class account_helper
 
         $publisher->add_inviter($member_id,$relay_id);
         if(session_helper::logined() && session_helper::isapp()) {
-            QueueClient::push('onAsyncRegister',['user' => $member_id,'inviter' => $relay_id]);
+            QueueClient::async_push('onAsyncRegister',['user' => $member_id,'inviter' => $relay_id],2);
         }
     }
 

+ 4 - 0
test/TestPush.php

@@ -66,4 +66,8 @@ class TestPush extends PHPUnit_Framework_TestCase
         push_helper::first_present(self::test_android_member_id,$fcode);
         push_helper::first_present(self::test_ios_member_id,$fcode);
     }
+    public function testAsyncPush()
+    {
+        QueueClient::async_push('onAsyncRegister',['user' => self::test_ios_member_id,'inviter' => self::test_android_member_id],1);
+    }
 }