https http
443 80
//signaure 加密方式
$signaure = sha1($token.$timestamp.$client_id.$nonceStr);
$data['token'] = $token;
$data['nonce'] = $nonceStr;
$data['timestamp'] = $timestamp;
$data['client_id'] = $client_id;
$data['signaure'] = $signaure;
//$data = json_encode($data,JSON_UNESCAPED_UNICODE);
$params = isset($data) ? http_build_query($data) : '';
$fp = fsockopen('ssl://admin.yifengaf.cn', 443, $error, $errstr, 1);
stream_set_blocking($fp,true);//開啓了手冊上說的非阻塞模式
stream_set_timeout($fp,1);//設置超時
$http = "POST /api/channeldataapi/custom HTTP/1.1\r\nHost: admin.yifengaf.cn\r\nContent-type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($params) . "\r\nConnection:close\r\n\r\n$params\r\n\r\n";
fwrite($fp, $http);
//usleep(1000); // 這一句也是關鍵,如果沒有這延時,可能在nginx服務器上就無法執行成功
while(!feof($fp))
{
echo fgets($fp, 1024);
}
fclose($fp);
for ($i = 0; $i < $num; $i++) {
$data = array(
'touser' => $fansInfo[$i]['openid'],
// "touser"=>'oncqX1ft1xDsAakmqyShSUwiJGOI',
'template_id' => $optionInfo['tpl_id'],
'url' => $optionInfo['url'],
'data' => $postdata
);
$params = json_encode($data,JSON_UNESCAPED_UNICODE);
$fp = fsockopen('api.weixin.qq.com', 80, $error, $errstr, 1);
stream_set_blocking($fp,true);//開啓了手冊上說的非阻塞模式
stream_set_timeout($fp,1);//設置超時
$http = "POST /cgi-bin/message/template/send?access_token={$accessToken} HTTP/1.1\r\nHost: api.weixin.qq.com\r\nContent-type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($params) . "\r\nConnection:close\r\n\r\n$params\r\n\r\n";
fwrite($fp, $http);
usleep(1000); // 這一句也是關鍵,如果沒有這延時,可能在nginx服務器上就無法執行成功
fclose($fp);
// $result = $accObj->sendTplNotice('o_aCh1R9-lur2VEQXJOSXZXK6-c8', $optionInfo['tpl_id'], $postdata, $optionInfo['url'], $optionInfo['topcolor']);
// $result = $this->sendTplMsg('o_aCh1ZR6b8Qh0U_GmjAHtyQ-wrc', $optionId);
if ($fp) {
$k = $i + 1;
}
}
$data['channel_id'] = '11111';
$data['search_date'] = '20200315'; //時間格式 date("Ymd") 如 20200309
$res = $this->sendfsockopen('custom','POST',$data);
print_r($res);die;
public function sendfsockopen( $path = '',$method = 'GET', $data = [], $timeout = 30){
$client_id = '111111';
$token = '111111111';
$nonceStr = random(25);
$timestamp = TIMESTAMP;
//signaure 加密方式
$signaure = sha1($token.$timestamp.$client_id.$nonceStr);
$data['token'] = $token;
$data['nonce'] = $nonceStr;
$data['timestamp'] = $timestamp;
$data['client_id'] = $client_id;
$data['signaure'] = $signaure;
$params = isset($data) ? http_build_query($data) : '';
$url = 'admin.yifengaf.cn';
$path = '/api/channeldataapi/' .$path;
$fp = fsockopen('ssl://' .$url, 443, $error, $errstr, $timeout);
stream_set_blocking($fp,true);//開啓了手冊上說的非阻塞模式
stream_set_timeout($fp,1);//設置超時
$info = stream_get_meta_data($fp);
$http = "{$method} {$path} HTTP/1.1\r\nHost: {$url}\r\nContent-type: application/x-www-form-urlencoded\r\nContent-Length: " . strlen($params) . "\r\nConnection:close\r\n\r\n$params\r\n\r\n";
fwrite($fp, $http);
//usleep(1000); // 這一句也是關鍵,如果沒有這延時,可能在nginx服務器上就無法執行成功
while ((!feof($fp))) {
$data .= fgets($fp, 8192);
@ob_flush();
flush();
}
$contentInfo = explode("\n\n", str_replace("\r", "", $data));
if (!strstr($contentInfo[0], "HTTP/1.1 200 OK")) {
return -10;
}
return json_decode(trim($contentInfo[1]),true);
}