This commit is contained in:
2024-12-21 22:40:41 +08:00
parent de89c84316
commit 330be24f9b
2 changed files with 79 additions and 16 deletions

23
go.php
View File

@@ -77,8 +77,23 @@ Swoole\Coroutine\run(function () use ($port, $apiEndpoint, $cacheDir, &$pathInde
fetchApiData($apiEndpoint, $reqPath, $token, $query['sign'] ?? '', function ($apiData) use ($cacheDir, &$pathIndex, $uniqidhex, $response) {
if ($apiData['code'] === 200 && isset($apiData['data']['url'])) {
$pathIndex[$uniqidhex] = $uniqidhex;
if (isCacheValid($cacheDir, $uniqidhex)) {
serveFromCache($cacheDir, $uniqidhex, $response);
return;
}
// 写入缓存
file_put_contents("$cacheDir/$uniqidhex.meta", json_encode($apiData['data']));
file_put_contents("$cacheDir/$uniqidhex.content", file_get_contents($apiData['data']['url']));
// 获取文件内容, curl
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiData['data']['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50);
$fileContent = curl_exec($ch);
curl_close($ch);
file_put_contents("$cacheDir/$uniqidhex.content", $fileContent);
serveFromCache($cacheDir, $uniqidhex, $response);
} else {
@@ -107,7 +122,11 @@ function serveFromCache($cacheDir, $cacheFile, $response) {
$response->header('Connection', 'keep-alive');
$response->header('Date', gmdate('D, d M Y H:i:s') . ' GMT');
$response->header('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT');
$response->end(file_get_contents("$cacheDir/$cacheFile.content"));
// 高效的读取文件
$file = fopen("$cacheDir/$cacheFile.content", 'r');
$response->end(fread($file, filesize("$cacheDir/$cacheFile.content")));
fclose($file);
}
function fetchApiData($apiEndpoint, $reqPath, $token, $sign, $callback) {