小文博客V2.0重大更新一览

小文blog小文 2018-11-28 20:29 3199人围观

不知不觉,小文博客上线2年有余,前些时候业余有些空闲,将博客进行升级,大大提升了访问速度,提高体验~

全栈https

站内https,七牛云https集成

服务器升级

从原来的1G1H升级为2G8H

redis缓存

复杂数据进行redis缓存,包括推荐,分类,banner等

集成swoole

在传统的 PHP 生命周期中, 为了脚本执行而浪费了大量的时间去创建和销毁资源。想象一下像 Laravel 这样的框架, 在每次请求中需要加载多少文件? 同时也浪费了大量的 I/O 操作。集成swoole大大提高了访问速度,提高并发。

$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
// $http = new swoole_http_server("127.0.0.1", 9501); // 只侦听 localhost
$http = new swoole_http_server("0.0.0.0", 9501); //侦听所有地址来的请求
$http->set(array(
    'reactor_num' => 1,
    'worker_num' => 4,    //worker process num
    'max_request' => 50,
    'dispatch_mode'=>3,
    'daemonize' => 1,
));
$http->on('request', function ($request, $response) use($kernel,$http) {
    if ('/swoole_stop' == $request->server['request_uri']) {
                $http->shutdown();
                $response->end('close');
                return;
            }
    if ('/favicon.ico' == $request->server['request_uri']) {
           $response->end('');
            return;
    }
    //大写转换兼容laravel
    $server = [];
    foreach ($request->server as $k=>$v) {
        $server[strtoupper($k)] = $v;
    }
    //将swoole请求构造为laravel请求
    $laravel_request= new Symfony\Component\HttpFoundation\Request(
        isset($request->get)?$request->get:[], isset($request->post)? $request->post:[], [], 
        isset($request->cookie)?$request->cookie:[], isset($request->files)? $request->files:[], $server);

    if (0 === strpos($laravel_request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded')
        && in_array(strtoupper($laravel_request->server->get('REQUEST_METHOD', 'GET')), array('PUT', 'DELETE', 'PATCH'))
        ) {
        parse_str($laravel_request->getContent(), $data);
        $laravel_request->request = new  Symfony\Component\HttpFoundation\ParameterBag($data);
    }
    $laravel_request = Illuminate\Http\Request::createFromBase( $laravel_request);
    $laravel_response = $kernel->handle( $laravel_request );
    //利用ob去保存laravel输出的content
    ob_start();
    $laravel_response->sendContent();
    $kernel->terminate($laravel_request, $laravel_response);
    $result = ob_get_clean();
    //设置headers
    foreach ($laravel_response->headers->allPreserveCase() as $name => $values) {
        foreach ($values as $value) {
            $response->header($name, $value);
        }
    }
    //设置cookies
    foreach ($laravel_response->headers->getCookies() as $cookie) {
        $response->cookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
    }
    $response->end($result);
});
$http->start();

同时,nginx要进行转发

location / {
             proxy_set_header   Host $host:$server_port;
             proxy_set_header   X-Real-IP $remote_addr;
             proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_pass http://127.0.0.1:9501;
             proxy_http_version 1.1;
             proxy_set_header Connection "keep-alive";
}

TODO

接入ES全文搜索

GO重写API接口

评论系统重写

接入第三方登录....

转载请注明来自小文blog,本文标题:小文博客V2.0重大更新一览

发布评论
生活是一场戏,主角当累了,你亦可成为观众,停下脚步,歇一歇