由于经常操作国外服务器,深刻的感受是速度比较低,有的时候可以说非常低。

最近需要两台服务器做下载数据分流。但是面临着一个问题:同时去上传两个资源到两台服务器明显是一件比较麻烦的事,而且速度很慢,花时间又多。所以想了一个办法,将资源上传到其中一台服务器,然后直接从另一台服务器登入这台服务器下载资源并拷贝到同样的目录下。

于是乎找了很多方法,其实最快的就是用linux上的shell方式,直接get文件就可以同步数据,但是可能服务的一些问题,并没有办法这么顺利,不过在php中的确找到了FTP相关的函数

resource ftp_connect ( string $host [, int $port [, int $timeout ]] )

bool ftp_login ( resource $ftp_stream , string $username , string $password )

bool ftp_get ( resource $ftp_stream , string $local_file , string $remote_file , int $mode [, int $resumepos ] )

利用这三个函数足以实现同步资源。因此我设置了两个函数。

//FTP连接
    function loginFtp() {
        // set up basic connection
        $ftp_server = 'serverName Or Ip';
        $ftp_user  = 'username';
        $ftp_pass  = 'password';

        // connect ftp
        $ftp_conn = ftp_connect($ftp_sever);

        // login with username and password
        $login_result = ftp_login($ftp_conn, $ftp_user, $ftp_pass);

        // check connection
        if ( !$ftp_conn || ! $login_result) {
            die("FTP connection has failed!");
        }

        return $ftp_conn;
    }

    //同步文件
    function synchronize($server_file, $ftpconn) {
        $local_file  = ltrim($server_file, '/');
        $local_file  = str_replace('pub/', '', $local_file);

        //目录不存在 重新创建
        $folder = strrpos($local_file, '/');
        if ($folder !== FALSE) {
            $local_folder = substr($local_file, 0, $folder) . '/';
        }

        if ( ! is_dir($local_folder) ) {
            mkdir($local_folder, 0775, TRUE);
        }

        // download the file
        $rs = ftp_get($ftpconn, $local_file, $server_file, FTP_BINARY);

        if ( $rs ) {
            if ( ! file_exists($local_file) )
                echo "Successfully written to {$local_file}.
"; else echo "Successfully rewritten to {$local_file}.
"; } else { echo "There was a problem on {$local_file}.
"; } } //实现同步 $conn = loginFtp(); $file = '/pub/files/msnlite.exe'; synchronize($file, $conn); // close the FTP stream ftp_close($conn);

在敏捷回顾会议中引导使用ORID

头一次接触ORID方法在2015年的一次敏捷回顾上,但是还不知道它,当天围坐在小会议室中通过该方法总结迭代开发经验,使我很有收获。ORID工作法很好理解,几乎一听就会,只是日常工作中我们总会选择更偷懒的方法,而忽略了总结过程中思考和逻辑的重要性。根据百度百科,ORID是一种...… Continue reading

生产环境Linux部署

Published on July 12, 2017

SVN 迁移到 GitLab

Published on June 17, 2017