PHP 利用 swoole 搭建一個七牛雲端儲存API

奕鵬發表於2020-04-29

安裝swoole

下載swoole原始碼。進行編譯安裝。操作很簡單,就不展示具體的流程。

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程式碼

建立專案目錄

mkdir qiniu_daodao

安裝七牛雲sdk包。

composer require qiniu/php-sdk

建立一個index.php

touch index.php

編寫如下程式碼

<?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();

配置服務

server {
    listen 443;
    server_name xxx.com;
    location / {
        proxy_pass http://127.0.0.1:9501;
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章