使用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
经压力测试,性能超高.!!
评论 (0)