# 安装 Composer
curl -sS https://getcomposer.org/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';
<?php
use GuzzleHttp\Client;
require 'vendor/autoload.php';
/**
* 使用 Guzzle 异步实现
*/
function test()
{
$access_token = curl_get('https://api.weixin.qq.com/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.weixin.qq.com/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' => 'www.baidu.com',
'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();
// 设置抓取的url
curl_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);
}
}
|