使用PHP做 http pxory 缓存&代理, 使用 redis 做缓存,支持毫秒过期,拥有超高性能

<?php

 //PHP http pxory 缓存&代理, 使用redis做缓存,支持毫秒过期,拥有超高性能

 $url=@$_GET['url'];
if (empty($_GET['url'])) {
     echo 'url is empty ';
     exit;
}

 $path=parse_url($url, PHP_URL_PATH);
 $key=$path;

 $redis = new Redis();
 $redis->pconnect('127.0.0.1', 6379);

if ($content=$redis->get($key)) {
     echo $content;
     exit;
}

 // Client

 $ch = curl_init($url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_NOSIGNAL, 1);    //注意,毫秒超时一定要设置这个
 curl_setopt($ch, CURLOPT_TIMEOUT_MS, 500);  //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用
 $data = curl_exec($ch);
 $curl_errno = curl_errno($ch);
 $curl_error = curl_error($ch);
 curl_close($ch);

if ($curl_errno > 0) {
     echo "cURL Error ($curl_errno): $curl_error\n";
} else {
   // $redis->setEx('key', 3600, 'value');//以秒为单位
     $redis->pSetEx($key, 50000, $data); //  将参数中的字符串值设置为键的值,并带有生存时间  pSetEx以毫秒为单位.
     echo $data;
     exit;
}

 

使用方法:

http://localhost/proxy.php?url=https://www.xxxxxxx.com:3004/rooms/5f392ac745f6cd207b5301db

经压力测试,性能超高.!!

使用PHP做 http pxory 缓存&代理, 使用redis做缓存,支持毫秒过期,拥有超高性能
标签: