使用swoole搭建一个七牛云存储token服务

安装swoole

下载swoole源码。进行编译安装。操作很简单,就不展示具体的流程。

1
2
3
4
5
cd path/swoole_source_code/
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-openssl --with-openssl-dir=/usr/bin/openssl
make
make install

这里的OpenSSL不是必须,因为个人设计到微信小程序,因此需要配置OpenSSL。

编写PHP代码

创建项目目录

1
mkdir qiniu_daodao

安装七牛云sdk包。

1
composer require qiniu/php-sdk

创建一个index.php

1
touch index.php

编写如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
use Qiniu\Auth;
$http = new Swoole\Http\Server("0.0.0.0", 9501);
$http->set([
// 下面的两个文件填写你ssl证书的绝对路径。
'ssl_cert_file' => '/usr/local/nginx/conf/ssl/1282278_wx.xx.com.pem',
'ssl_key_file' => '/usr/local/nginx/conf/ssl/1282278_wx.xx.com.key',
'daemonize' => 1,
'log_file' => '/home/wwwlogs/xx.xx.xx.log',
]);
$http->on('request', function ($request, $response) {
$redis = new Redis();
// 需要安装redis扩展。
$redis->connect('127.0.0.1', 6379);
$token = $redis->get('qiniu_token');
$message = 'ok';
$code = 200;
if (empty($token)) {
require_once __DIR__ . '/vendor/autoload.php';
try {
$accessKey = 'xx';
$secretKey = 'xx';
$auth = new Auth($accessKey, $secretKey);
$bucket = 'xx';// 七牛云的空间名称
$token = $auth->uploadToken($bucket);
$redis->set('qiniu_token', $token, 30);
} catch (\Exception $exceptionn) {
$message = 'error';
$code = 100;
}
}
$data = json_encode(['code' => $code, 'message' => $message, 'data' => ['token' => $token]], JSON_UNESCAPED_UNICODE);
$response->header("Content-Type", "application/json; charset=utf-8");
$response->end($data);
});

$http->on('close', function () {
var_dump("服务关闭");
});
$http->start();

配置服务

1
2
3
4
5
6
7
server {
listen 443;
server_name xxx.com;
location / {
proxy_pass http://127.0.0.1:9501;
}
}