Linux下php安装Memcache扩展
1、安装memcache1234567891011121314wget http://pecl.php.net/get/memcache-3.0.8.tgz tar -vxzf memcache-3.0.8.tgz #解压 cd memcache-3.0.8 #进入安装目录 /usr/bin/phpize #用phpize生成configure配置文件,可以使用which phpize查看路径 #配置 笔者的php-config目录为/usr/bin/php-config,可以使用php-config查看路径./configure --enable-memcache --with-php-config=/usr/bin/php-config --with-zlib-dir make #编译 make install #安装
安装完成之后,出现下面的安装路径
12/usr/lib64/php/modules/ls /usr/lib64/php/modules/ #检查是否成功生成了.so文件
2、配置php支持1234vi /etc/php.ini #编辑配置文件,在最 ...
商城秒杀等高并发活动的处理
秒杀抢购活动是现在很多商城常见的营销手段,小米抢购、淘宝的整点免单、聚划算等都是成功的例子。
从简单处着手,秒杀是很好理解的:设置要秒杀的商品的数量,抢完为止。但是,实际应用中一瞬间的高并发压力、以及并发带来的负库存是要着重考虑。
要避免负库存的出现,可以在数据库加锁,不管外部多少请求,都可以在数据库操作前给阻断。当然,这种思路可以用在流量不大的普通商品上,用在高并发的秒杀商品上显然是不合适的,直接高频率的读写操作数据库,对数据库的压力太大,严重拖性能,量大的话挂掉也是很有可能的。
这时候就需要用到缓存队列了,现在前面应用层处理并发,这个资源的消耗是比较小的,内存中的处理效率也会很快。队列处理完之后再向数据库层进行请求操作。
当然,有时候还有可能会用到文件排他锁,在处理一个订单的时候,使用flock锁定文件,如果锁定失败说明有其他进程正在锁文件处理订单,返回失败。但是只使用这个的话,个人感觉不太好,我宁愿让用户在队列中多等待几秒,也不想直接返回失败。可以在缓存队列到数据库的时候使用下这个,多加一层安全系数。
模拟场景:商城做一个秒杀活动,秒杀的商品数量为10,秒到即得。
方案:1、应用 ...
Apache与Nginx的优缺点比较
Apache与Nginx的优缺点比较
1、优缺点对比nginx相对于apache的优点:
轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单 社区活跃,各种高性能模块出品迅速啊
apache 相对于nginx 的优点:
rewrite ,比nginx 的rewrite 强大
模块超多,基本想到的都可以找到
少bug ,nginx 的bug 相对较多
超稳定存在就是理由,一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。当然, ...
Markdown基本语法
Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,这种相对于更为复杂的HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。
一、认识 Markdown
在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版、字体设置。它使我们专心于码字,用「标记」语法,来代替常见的排版格式。例如此文从内容到格式,甚至插图,键盘就可以通通搞定了。目前来看,支持 Markdown 语法的编辑器有很多,包括很多网站(例如简书)也支持了 Markdown 的文字录入。Markdown 从写作到完成,导出格式随心所欲,你可以导出 HTML 格式的文件用来网站发布,也可以十分方便的导出 PDF 格式,这种格式写出的简历更能得到 HR 的好感。甚至可以利用 CloudApp ...
GitLab自动化发布
钩子(hooks)Git是在特定事件发生之前或之后执行特定脚本代码功能(从概念上类比,就与监听事件、触发器之类的东西类似)。Git Hooks就是那些在Git执行特定事件(如commit、push、receive等)后触发运行的脚本。gitlab的web hooks跟git hook类似。也是当项目发生提交代码、提交tag等动作会自动去调用url,这个url可以是更新代码。或者其他操作。
配置目的:由于系统属于后台接口系统,开发提交完git仓库后要实时的部署到测试环境,这时候就需要用到gitlab的web hooks自动更新部署了。客户端:要自动更新的测试服务器IP:192.168.1.2服务端:Gitlab服务器IP:192.168.1.1Gitlab Version: 7.13.0.preGitLab-Shell Version: 2.6.3
1、在客户端上面配置apache配置文件,为web hooks添加一个接口访问
123456789101112131415161718#vim /usr/local/apache/conf/httpd.conflisten 81ServerA ...
Linux下php安装Redis扩展
Linux下php安装Redis扩展
1、安装redis
123456789101112131415wget https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gztar zxvf 2.2.4.tar.gz #解压cd phpredis-2.2.4 #进入安装目录/usr/local/php/bin/phpize #用phpize生成configure配置文件#笔者的目录为(/usr/bin/phpize)可以使用which phpize查看路径./configure --with-php-config=/usr/local/php/bin/php-config #配置#笔者的目录为(./configure --with-php-config=/usr/bin/php-config )make #编译make install #安装
安装完成之后,出现下面的安装路径
/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/笔者的目录为/usr/lib64/ ...
push到github时每次输入用户名和密码
在github.com上 建立了一个小项目,可是在每次push的时候,都要输入用户名和密码,很是麻烦
原因是使用了https方式 push
在termail里边 输入 git remote -v
可以看到形如一下的返回结果
origin https://github.com/username/demo.git (fetch)
origin https://github.com/username/demo.git (push)
下面把它换成ssh方式的。
1. git remote rm origin2. git remote add origin git@github.com:username/demo.git3. git push origin
git配置两个SSH-Key
我们在日常工作中会遇到公司有个gitlab,还有些自己的一些项目放在github上。这样就导致我们要配置不同的ssh-key对应不同的环境。下面我们来看看具体的操作:
1,生成一个公司用的SSH-Key
1$ ssh-keygen -t rsa -C "youremail@yourcompany.com" -f ~/.ssh/id_rsa
在~/.ssh/目录会生成id_rsa和id_rsa.pub私钥和公钥。 我们将id_rsa.pub中的内容粘帖到公司gitlab服务器的SSH-key的配置中。
2,生成一个github用的SSH-Key
1$ ssh-keygen -t rsa -C "youremail@your.com" -f ~/.ssh/id_rsa_github
在~/.ssh/目录会生成id_rsa_github和id_rsa_github私钥和公钥。 我们将id_rsa_github中的内容粘帖到github服务器的SSH-key的配置中。
3,添加私钥
1$ ssh-add ~/. ...
Vagrant 打造跨平台开发环境
Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史。
我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。
安装步骤1. 安装 VirtualBox虚拟机还是得依靠 VirtualBox 来搭建,免费小巧。下载地址:https://www.virtualbox.org/wiki/Downloads
虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的
2. 安装 Vagrant下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。
此外,还得下载官方封装好的基础镜像:Ubuntu precise 32 VirtualBox http://files.vagrantu ...
php批量修改文件名称
程序功能:利用PHP目录和文件函数遍历用户给出目录的所有的文件和文件夹,修改文件名称;
1234567891011121314151617181920function fRename($dirname){ if(!is_dir($dirname)){ echo "{$dirname}不是一个有效的目录!"; exit(); } $handle = opendir($dirname); while(($fn = readdir($handle))!==false){ if($fn!='.'&&$fn!='..'){ $curDir = $dirname.'/'.$fn; if(is_dir($curDir)){ fRename($curDir); ...