Esempio n. 1
0
 /**
  * 通知客户端
  * Enter description here ...
  * @param unknown_type $operation
  * @param unknown_type $data
  */
 protected function queueSend($start = 0)
 {
     $time = Windid::getTime();
     $appids = $nids = array();
     $logDs = $this->_getNotifyLogDs();
     $queue = $logDs->getList(0, 0, 10, $start, 0);
     if (!$queue) {
         return false;
     }
     foreach ($queue as $v) {
         $appids[] = $v['appid'];
         $nids[] = $v['nid'];
     }
     $apps = $this->_getAppDs()->fetchApp(array_unique($appids));
     $notifys = $this->_getNotifyDs()->fetchNotify(array_unique($nids));
     $postData = $urls = array();
     foreach ($queue as $k => $v) {
         $appid = $v['appid'];
         $nid = $v['nid'];
         $array = array('windidkey' => WindidUtility::appKey($v['appid'], $time, $apps[$appid]['secretkey']), 'operation' => $notifys[$nid]['operation'], 'uid' => (int) $notifys[$nid]['param'], 'clientid' => $v['appid'], 'time' => $time);
         $urls[$k] = WindidUtility::buildClientUrl($apps[$appid]['siteurl'], $apps[$appid]['apifile']) . http_build_query($array);
     }
     if (!$urls) {
         return false;
     }
     $result = WindidUtility::buildMultiRequest($urls);
     sleep(3);
     $this->logId = $this->logId + $result;
     $start += 10;
     $this->queueSend($start);
 }
Esempio n. 2
0
 public function clientTestAction()
 {
     $clientid = $this->getInput('clientid');
     $client = $this->_getAppDs()->getApp($clientid);
     if (!$client) {
         $this->showError('WINDID:fail');
     }
     $time = Pw::getTime();
     $array = array('windidkey' => WindidUtility::appKey($client['id'], $time, $client['secretkey']), 'operation' => 999, 'uid' => 1, 'clientid' => $client['id'], 'time' => $time);
     $url = WindidUtility::buildClientUrl($client['siteurl'], $client['apifile']) . http_build_query($array);
     $result = WindidUtility::buildRequest($url);
     if ($result === 'seccess') {
         $this->showMessage('WINDID:success');
     }
     $this->showError('WINDID:fail');
 }
Esempio n. 3
0
 public function clientTestAction()
 {
     $clientid = $this->getInput('clientid');
     $client = $this->_getAppDs()->getApp($clientid);
     if (!$client) {
         $this->showError('WINDID:fail');
     }
     $time = Pw::getTime();
     $params['params'] = serialize(array('test' => $time));
     $windidkey = WindidUtility::appKey($client['id'], $time, $client['secretkey']);
     $url = WindidUtility::buildClientUrl($client['siteurl'], $client['apifile']) . 'operation=999&windidkey=' . $windidkey . '&clentid=' . $client['id'] . '&time=' . $time;
     $result = WindidUtility::buildRequest($url, $params);
     if ($result === 'seccess') {
         $this->showMessage('ADMIN:success');
     }
     $this->showError('ADMIN:fail');
 }
 /**
  * 同步登录登出
  *
  * @param string $notify
  * @param int $uid
  */
 public function syn($method, $uid, $appid = 0)
 {
     $operation = $this->getOperation($method);
     $time = Pw::getTime();
     $data = array();
     $apps = $this->_getAppDs()->getList();
     $syn = false;
     foreach ($apps as $val) {
         if (!$val['issyn'] && $val['id'] == $appid) {
             $syn = true;
             break;
         }
         if (!$val['issyn'] || $val['id'] == $appid) {
             continue;
         }
         $array = array('windidkey' => WindidUtility::appKey($val['id'], $time, $val['secretkey'], array('uid' => $uid), array()), 'operation' => $operation, 'uid' => $uid, 'clientid' => $val['id'], 'time' => $time);
         $data[] = WindidUtility::buildClientUrl($val['siteurl'], $val['apifile']) . http_build_query($array);
     }
     return $syn ? array() : $data;
 }
 protected function _request($queue)
 {
     $time = Pw::getTime();
     $appids = $nids = array();
     foreach ($queue as $v) {
         $appids[] = $v['appid'];
         $nids[] = $v['nid'];
     }
     $apps = $this->_getAppDs()->fetchApp(array_unique($appids));
     $notifys = $this->_getNotifyDs()->fetchNotify(array_unique($nids));
     $post = $urls = array();
     foreach ($queue as $k => $v) {
         $appid = $v['appid'];
         $nid = $v['nid'];
         $array = array('windidkey' => WindidUtility::appKey($v['appid'], $time, $apps[$appid]['secretkey']), 'operation' => $notifys[$nid]['operation'], 'clientid' => $v['appid'], 'time' => $time);
         $post[$k] = unserialize($notifys[$nid]['param']);
         $urls[$k] = WindidUtility::buildClientUrl($apps[$appid]['siteurl'], $apps[$appid]['apifile']) . http_build_query($array);
     }
     return WindidUtility::buildMultiRequest($urls, $post);
 }