WEB技术交流,网上优秀资料+自己的体会~
Apr 2

[置顶] VI扫盲篇 不指定

phpcto , 14:16 , WEB技术 » linux 探索 , 评论(0) , 引用(0) , 阅读(285392) , Via 本站原创
Mar 8
Oct 12
终于让我找到一篇有用日志了


      Web 服务器执行一个脚本,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。
    而有的时候,我们更本不关心这些耗时的脚本的执行结果,但却还要等他执行完返回,才能继续下一步。    
    那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行?  
      
    接下来,我将使用fscokopen来实现这一功能。
    
    PHP是支持socket编程的,就是fsockopen, 在以前做CMS的时候,我也曾经用过它做过smtp发信。
    fscokopen返回一个到远程主机连接的句柄。你可以像使用fopen返回的句柄一样,对她进行写fwrite,读取fgets, fread等操作。
    
    我们的异步PHP,主要想要的效果就是,触发一个PHP脚本,然后立即返回,留它在服务器端慢慢执行。前面我也写过一篇文章讨论过这个问题。
Dec 9

git的使用 不指定

phpcto , 11:26 , WEB技术 , 评论(0) , 引用(0) , 阅读(331458) , Via 本站原创
  Git介绍

Git诞生于2005年,日臻成熟完善,现在是最好的版本控制系统了,并由此生成一个世界最大的代码分享社区GitHub。
在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。
Git的特性与优点

1.分布式:Git最大的特性。Git在本地磁盘上就保存着所有有关当前项目的历史更新,并且Git中的绝大多数操作都只需要访问本地文件和资源,不用连网,所以处理起来速度飞快。用SVN的话,没有网络或者断开VPN你就无法做任何事情。但用Git的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程的镜像仓库。换作其他版本控制系统,这么做几乎不可能,抑或是非常麻烦。

2.Git每一次pull操作都是对代码仓库的完整备份;

3.速度,相比有多个分支的版本库,Git的速度远优于SVN,SVN对每个分支都会重复一样的checkout动作。

4.分支:

     在SVN,分支是一个完整的目录,且这个目录拥有完整的实际文件。如果某个团队成员想要新建一个分支进行一些特性工作,如预研一些新功能,修改些东西以进行性能\安全测试,那将会影响“全世界”!
     而Git,每个成员可以任意在自己的本地版本库新建无限个分支。举例:当我想尝试破坏自己的程序(安检测试),并且想保留这些被修改的文件供日后使用,我可以开一个分支,做我喜欢的事。完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时,我只要把它从我的本地版本库删除即可。无痛无痒。
Git的分支名是可以使用不同名字的。例如:我的本地分支名为testing,而在主要版本库的名字其实是master。
最值得一提,我可以在Git的任意一个提交点(commit point)开启分支! (其中一个方法是使用gitk –all 可观察整个提交记录,然后在任意点开启分支。)
希望以后大家能勇敢的新建分支,因为放心吧,它不会影响任何人,不会有任何坏处。

5.提交(Commit)

    在SVN的提交,会直接记录到远程版本库。当你发现你的提交存在严重问题时,你已经无法阻止了。另外如果网路中断,你根本没办法提交,也就没有办法享受版本管理了!
    而Git的提交完全属于本地版本库的活动。而你只需“推”(git push)到主要版本库即可。 Git的“推”其实是在执行“同步”(Sync)

6.文档结构

     SVN会在每一个目录置放一个.svn。如果想移除这些.svn是很累的。

     而Git会在根目录下有一个.git目录,以及.gitignore。
关键名词

想要理解Git,首页要先了解下面几个关键词:
1、workspace
2、index
3、local repo
4、repo
5、branch
6、stash,把本地修改的所有东西藏起来。

用下图来解释整个Git的结构:

安装

Git的安装都比较简单:

Mac下,下载DMG安装包,按提示安装就行,下载链接:
     https://code.google.com/p/git-osx-installer/downloads/detail?name=git-1.8.3.1-intel-universal-snow-leopard.dmg


Linux下的安装:
     yum install git git-svn git-email git-gui gitk -y

Windows下的安装msysGit
      http://msysgit.github.io/
使用

原生的Git都是基于命令,如果有兴趣可以自己去看看,下面主要介绍基于sourcetree的使用

1、pull:从过程服务器把最新的版本以合并本地。

2、提交,需要有3步骤: 添加(add/remove)修改的文件到暂存区, 提交(commit)暂存区的内容到本地版本库,push提交记录到远程版本库。

     这时介绍另一个重要特性:行提交。 在有两个功能点都修改到同一文件时,可以把修改分为两次不同的提交,

     如下图,SouceTree已经很人性化的把修改分为两块了,下面红圈内有两个按钮,

     Stag Hunk ----- 提交到Index

     Stage Selected Line -----提交选择的行(图中蓝色的)到Index

     Discard Hunk-----取消这块修改, 这个会把该块还原到上一个版本(版本来自于Local)

     Discard Selected Lines -----取消这一行

3、冲突解决

     当pull发生冲突时,需要行Stash,再pull,aplly Stash, 这个时候可以选择 Show conflicts,查看冲突的文件,进行冲突的编辑。

然后在冲突的文件上点右键,可以直接选择用自己的,还是用来来自版本库的,或者标记为已解决,再手动修改文件。

4、撤销提交

在开发过各种,总会遇到想撤回提交的情况:

     1)working中,取消某个修改

          选择文件,右键----Reset

          一个文件的一部分撤销,如上图中的 Discard Hunk、Discard Selected Lines

     2)从Index中撤回:

          在Index框内选择文件,右键----Reset

           一个文件的一部分撤销,如上图中的 Unstag Hunk、 Selected Lines Unstag

     3) Commit后撤回,选择版本号,右键-----Reverse commit。之后working目录也有更新到之个版本之前(只限于这个版本影响的文件), 同时会产生一个push任务,

     反转的反转,如果发现刚刚的Reverse选错版本号了,这个时候可以再Reverse一次,把之前的还原回来。

     4)错误已经push到Remote了,处理跟3)一样,Reverse后再提交一次

5、再次介绍下Stash

     前面提过了Stash中把当前的修改的文件放抽屉里,并把这些文件还原到上一个版本。

     这里可以Stash多次,并在左侧可以看到所有Stash的列表。当需要用时把这个版本Apply。Apply时只是还原那些被修改的文件,并不修改其他文件。

     如果被Stash的文件再次被修改了呢?Apply时会提示你进行Stash或者commit该文件。

6、分支:

添加分支

    

删除分支

合并:推送到Remote的分支才可以选择Merge Fetched.



在线浏览Git版本记录

192.168.1.200/gitlist
迁出项目下的一个新版本分支到服务器目录上

示例:在qimingdao上创建一个新版本分支代码目录

步骤如下:

1.进入服务器上的qimingdao项目目录

cd /opt/lampp/htdocs/project

2.执行克隆分支命令

git clone git@192.168.1.200:qimingdao.git -b project_new project_new

其中:

clone git@192.168.1.200:qimingdao.git 表示需要克隆的具体的git服务器地址

-b project_new 表示迁出名为project_new的分支

第二个project_new 表示迁出后在本地的目录名为project_new

3.修改权限和用户组

chmod -R 0755 project_new

chown -R git.git project_new

利用hooks对GIT的代码自动部署

示例:对qimingdao下面的project_new 分支 进行代码自动部署

步骤如下:

1.进入git目录

su git 或者 cd /home/git

2.进入对应git仓库的hooks目录,比如qimingdao

cd repositories/qimingdao.git/hooks

3.编辑hooks洗面的post-update脚本

添加如下代码:

git config core.filemode false

cd /opt/lampp/htdocs/project/project_new

unset GIT_DIR

git pull

这样,每次提交project_new的代码后,将会默认pull到服务器上的代码目录

PS:以后在研究下集群分布式自动部署git。

Mar 11
要在同一机器上启动多个sphinx搜索进程searchd,必须为不同的进程指定不同的配置文件(sphinx.conf ),其中搜索进程的端口号不能相同,即 listen = 0.0.0.0:3312 中的默认端口3312 必须更改为一个系统不在使用的端口。如果要指定不同的数据库,必须更改:

  sql_db = dbname

  sql_host = 192.168.1.100

  sql_pass = username

  sql_user =password

  sql_port = 3306

配置文件中的index名称也不能相同,另外,不同配置文件的生成的索引文件不能放在同一个目录,否则搜索时会对整个文件夹下的索引文件进行搜索,但是不同索引文件对应不同的数据库,这样取数据时会出现问题。

假设有两个配置文件:sphinx1.conf和sphinx2.conf分别位于两个sphinx数据目录:/home/testuser/sphinx1和/home/testuser/sphinx2中 ,sphinx安装路径为/usr/local/sphinx/,那么启动方法如下:

/usr/local/sphinx/bin/searchd --config /home/testuser/sphinx1/sphinx1.conf

/usr/local/sphinx/bin/searchd --config /home/testuser/sphinx2/sphinx2.conf

同样,生成索引的方法如下:

/usr/local/sphinx/bin/indexer -- config /home/testuser/sphinx1/sphinx1.conf  indexname  --rotate

/usr/local/sphinx/bin/indexer -- config /home/testuser/sphinx2/sphinx2.conf  indexname  --rotate

加参数—rotate是为了在更新索引文件后,无须重新启动searchd进程而可以搜索到更新index后的内容。
分页: 1/40 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]