1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > PHP异步实现微信公众号模板消息的主动推送

PHP异步实现微信公众号模板消息的主动推送

时间:2021-06-04 03:06:08

相关推荐

PHP异步实现微信公众号模板消息的主动推送

# 安装 Composercurl -sS /installer | php

使用composer.phar客户端将Guzzle作为依赖添加到项目:

php composer.phar require guzzlehttp/guzzle:~6.0

或者,你可以编辑项目中已存在的composer.json文件,添加Guzzle作为依赖:

{"require": {"guzzlehttp/guzzle": "~6.0"}}

安装完毕后,你需要引入Composer的自动加载文件:

require 'vendor/autoload.php';

<?phpuse GuzzleHttp\Client;require 'vendor/autoload.php';/*** 使用 Guzzle 异步实现*/function test(){$access_token = curl_get('https://api./cgi-bin/token?grant_type=client_credential&appid=你的app_id&secret=你的app_secret')['access_token'];# --------------------------------------------------------------------// 返回结果继续执行代码ob_end_clean();ob_start();// $data['code'] = 1;// $data['data'] = '';// $data['msg'] = '发送中';// $data['url'] = '/wxfs.php/wechatfans.send/add';// $data['wait'] = 3;// echo json_encode($data); // 返回结果给前端$size = ob_get_length();header("Content-Length: " . $size);header("Connection: close");header("HTTP/1.1 200 OK");header('Content-Type:application/json; charset=utf-8');ob_end_flush();if (ob_get_length()) {ob_flush();}flush();fastcgi_finish_request(); // 响应完成, 立即返回到前端,关闭连接ignore_user_abort(true); // 在关闭连接后,继续运行php脚本// set_time_limit(0); // 没有时间限制,不设置超时时间(根据实际情况使用)# --------------------------------------------------------------------$client = new Client();$wxUrlForSendingMessage = 'https://api./cgi-bin/message/template/send?access_token=';// 单人// $touser_arr = array('openid1', 'openid2');// 群发$touser_arr = Db::table("wxfs")->column("openid");$touser_arr = array_reverse($touser_arr);$num = 0;@unlink(__DIR__ . '/logs.txt');foreach ($touser_arr as $v) {$response = $client->post($wxUrlForSendingMessage, ['query' => ['access_token' => $access_token,],'json' => ['touser' => $v, // 粉丝的openid'template_id' => '微信公众号的模板id','url' => '','data' => ['first' => ['value' => '标题','color' => '#173177',],'keyword1' => ['value' => '项目名称','color' => '#CC3399',],'keyword2' => ['value' => '最新状态','color' => '#CC3399',],'keyword3' => ['value' => date('Y年m月d日 H:i:s'),'color' => '#CC3399',],'remark' => ['value' => 备注,'color' => '#FF0000',]]]]);if (json_decode((string)$response->getBody(), true)['errmsg'] === 'ok') {$num += 1;// 记录到文件logs(date('Y-m-d H:i:s') . " [{$v}] 发送成功\r\n");}}}function curl_get($url){// 初始化$curl = curl_init();// 设置抓取的urlcurl_setopt($curl, CURLOPT_URL, $url);// 设置头文件的信息作为数据流输出curl_setopt($curl, CURLOPT_HEADER, 0);// 设置获取的信息以文件流的形式返回,而不是直接输出。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);// 执行命令$data = curl_exec($curl);// 关闭URL请求curl_close($curl);if (isset(json_decode($data, true)['errcode'])) {return json_decode($data, true);} else {// 返回数据return json_decode($data, true);}}function logs($str){// 记录到文件if (($fp = fopen(__DIR__ . '/logs.txt', 'a+')) !== false) {fputs($fp, $str);fclose($fp);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。