send(); } private function send(){ $client = new Client(); $requests = $this->generate(); $pool = new Pool($client, $requests, [ 'concurrency' => 25, 'fulfilled' => function ($response, $index) { }, 'rejected' => function ($reason, $index) { }, ]); $promise = $pool->promise(); $promise->wait(); } private function generate(){ $uids = DB::connection('api_mysql')->table('user_coupon') ->where('use_status',1) ->where('expire_time','>=',date('Y-m-d H:i:s',time()+86400)) ->where('expire_time','<=',date('Y-m-d H:i:s',time()+86400+3600)) ->select('uid') ->get(); if(!$uids) return ; foreach ($uids as $item){ $user = DB::connection('api_mysql')->table('temp_force_subscribe_users') ->select('id','uid','distribution_channel_id','openid','appid')->where('uid',$item->uid)->first(); if(!$user) continue; $user_info = DB::connection('api_mysql')->table('users')->where('id',$item->uid)->select('nickname')->first(); $nickname = ''; if($user_info && $user_info->nickname)$nickname = $user_info->nickname; $content_format = "尊敬的会员:%s\r\n\r\n您有一张优惠券即将到期\r\n点击立即使用"; $link = 'https://site'.encodeDistributionChannelId($user->distribution_channel_id).'.leyuee.com/pay?fromtype=coupon_expire_push'; $content = sprintf($content_format,$nickname,$link); $accecc_token = $this->getAccessToken($user->appid); if(!$accecc_token)continue; $url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.$accecc_token; $request = new GuzzleRequest('post',$url,[],\GuzzleHttp\json_encode([ 'touser'=>$user->openid, 'msgtype'=>'text', 'text'=>['content'=>$content] ],JSON_UNESCAPED_UNICODE)); yield $request; } } private function getAccessToken($appid){ $WechatController = new WechatController($appid); $accessToken = $WechatController->app->access_token; // EasyWeChat\Core\AccessToken 实例 $token = $accessToken->getToken(); // token 字符串 return $token; } }