博客

  • PHP中一个导出到excel的函数

    /**

    * 导出数据为excel表格

    *@param $data    一个二维数组,结构如同从数据库查出来的数组

    *@param $title   excel的第一行标题,一个数组,如果为空则没有标题

    *@param $filename 下载的文件名

    *@examlpe

    $stu = M (‘User’);

    $arr = $stu -> select();

    exportexcel($arr,array(‘id’,’账户’,’密码’,’昵称’),’文件名!’);

    */

    function exportexcel($data=array(),$title=array(),$filename=’report’){

    header(“Content-type:application/octet-stream”);

    header(“Accept-Ranges:bytes”);

    header(“Content-type:application/vnd.ms-excel”);

    header(“Content-Disposition:attachment;filename=”.$filename.”.xls”);

    header(“Pragma: no-cache”);

    header(“Expires: 0”);

    //导出xls 开始

    if (!empty($title)){

    foreach ($title as $k => $v) {

    $title[$k]=iconv(“UTF-8”, “GB2312”,$v);

    }

    $title= implode(“\t”, $title);

    echo “$title\n”;

    }

    if (!empty($data)){

    foreach($data as $key=>$val){

    foreach ($val as $ck => $cv) {

    $data[$key][$ck]=iconv(“UTF-8”, “GB2312”, $cv);

    }

    $data[$key]=implode(“\t”, $data[$key]);

    }

    echo implode(“\n”,$data);

    }

    }

  • 百度WordPress结构化数据插件上线

    百度前天上线了WordPress结构化数据插件,这款插件有助于WordPress为程序的站点生成sitemap提交到百度,能够及时将博客内容推送给百度,保证内容快速全面的被收录。

    1、安装插件后,能够遍历博客所有文章,自动生成sitemap提交给百度,保证博客历史内容的收录。
    2、安装插件后,当博客中有新文章发布时,会将新内容实时推送给百度,大大提升博客新内容的收录速度。
    3、博客内容在百度搜索结果中能获得更丰富的信息展示,提高用户点击率。
    百度站长平台下载地址:http://zhanzhang.baidu.com/dataplug/index

    第一步:下载适合版本的插件,解压文件至WordPress平台目录wp-content/plugins下;
    第二步:在管理中心应用页面-插件列表目录下,启用“baidusubmit”插件;
    第三步:启用插件后,验证网站网址,验证成功,插件安装完成。

  • Sublime Text

    下载安装

    插件

    可通过此插件来安装安装其他插件

    安装方法:快捷键ctrl+` 或者 View > Show Console 菜单打开控制器

    sublime text 3 复制以下安装

    import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
    

    sublime text 2 复制以下安装

    import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')
    

    安装完成之后,我们摁下“shift + ctrl + p”呼出面板,输入cp选命令执行即可
    (更多…)

  • MacBook Pro 入手

    Mac 到手有几天功夫了,所以每天都在折腾,配置环境,各种软件,在这里一一记录。

    开发相关

    • Mac有自带Apache和PHP,自己下载了Xamp集成环境,试用后不满意,下载了Mamp集成环境,使用中;
    • Mysql管理:Sequel pro ,这个和我在Window下使用的HeidiSQL相似,暂用;
    • FTP:yummyFTP和transmit; (更多…)
  • php怎么处理​高并发网站?

    1,Webserver (Nginx) :这一层采用分布式部署,结合智能DNS解析可以简易地防止单点故障、实现区域访问加速,结合LVS很容易实现负载均衡。这一层主要是负责处理静态请求和转发PHP请求至第二层的PHP处理节点,对于静态资源地址可以单独拿出来部署,或者直接使用商用的云存储服务(国内七牛,又拍云,国外有Amazon S3)

    (更多…)

  • MYSQL–事务处理

    事务处理在各种管理系统中都有着广泛的应用,比如人员管理系统,很多同步数据库操作大都需要用到事务处理。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! (更多…)

  • Kloxo 升级php

    背景:
    ThinkPHP3.2 需要5.3+的php版本,而kloxo的php还是5.2.17的 
    kloxo官方目前可用的PHP版本:
    php-pdo-5.2.17-13
    php-5.2.17-13
    php-mysql-5.2.17-13
    php-devel-5.2.17-13
    php-pear-1.4.9-8.el5
    php-xml-5.2.17-13
    php-common-5.2.17-13
    php-cli-5.2.17-13
    lxphp-5.2.1-400
    php-imap-5.2.17-13
    php-mbstring-5.2.17-13
    php-gd-5.2.17-13
    php-mcrypt-5.2.17-13
    所以需要手动升级
     
    过程:
    • 移除掉PHP
    yum remove php
    • 移除掉公共包
    yum remove php-common
    • 安装php 5.3
    yum install php53
    • 安装mysql支持库
    yum install php53-mysql
    不然web会提示mysql不可用
    • 安装xml支持库
    yum install php53-xml
    不然会出现找不到dom啥的
    • 安装gd支持库
    yum install php53-gd
    不然验证码插件使用不了
  • 15分钟学会使用Git和远程代码库(转)

    Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。

     

    工作步骤

    我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。
    1. 创建一个远程的空代码库(在BitBucket上)
    2. 在本地代码库添加一个项目
    3. 在分支上开发新功能
    4. a) 保留新功能 或者 b) 丢弃它们
    5. 也许,回到某个早先的时间点
    6. 将本地代码库推送到远程代码库
    7. 在另一台机器上取得远程代码库

    安装Git

    在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
    git clone https://github.com/git/git
    在Windows上,你可以在这里下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在这里,Linux的操作指导在这里
  • Git的使用

    linux下安装:
    用yum来装git, 但是第一次装找不到源,最后显示 “nothing to do”,添加源:

    再安装:
    yum install git
    使用:

    首先配置:
    git config –global user.name XXX
    git config –global user.email XXX
    git config –global push.default upstream

    要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:

    $ git init

    从现有仓库克隆

    git clone git://github.com/XXX

    Git的基本命令    

         现在我们有了本地和远程的版本库,让我们来试着用用Git的基本命令吧:

            git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:’git pull origin master’就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update

            git add是将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,例如’git add app/model/user.rb’就会增加app/model/user.rb文件到Git的索引中

            git rm:从当前的工作空间中和索引中删除文件,例如’git rm app/model/user.rb’

            git commit:提交当前工作空间的修改内容,类似于SVN的commit命令,例如’git commit -m “story #3, add user model”‘,提交的时候必须用-m来输入一条提交信息

            git push:将本地commit的代码更新到远程版本库中,例如’git push origin’就会将本地的代码更新到名为orgin的远程版本库中

            git log:查看历史日志

            git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如’git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20’,Git的版本号都是生成的一个哈希值、

            上面的命令几乎都是每个版本控制工具所公有的,下面就开始尝试一下Git独有的一些命令:

     

  • PHP获取远程图片


    $path = ‘upload/pic.jpg’;  //写入路径、文件
    $path_tmp = $path.”_tmp”; //临时写入路径、文件
            //写入路径权限设置

            $realdir = ”;
                    $file_dir = explode(‘/’,$path);
                    array_pop($file_dir); //取得路径
                    foreach ($file_dir as $dir) {
                        if ( $dir == ” )
                          continue;
                       $realdir .= ‘/’ . $dir;
                        if ( ! is_dir($realdir) ) {
                            if ( ! mkdir($realdir) ) {
                            return ”;
                            }else{
                                chmod 777 $realdir;
                            }
                        }
                    }
                     //获取图片到临时路径、文件
                    $cmd = wget -q -x -t3 -T5 -O $path_tmp $url;
                  if(is_file($path_tmp)){
                        if(filesize($path_tmp) > 10){//10 byte
                            mv $path_tmp $path;
                            chmod 777 $path;
                        }else{
                            rm $path_tmp;
                        }
                    }