Author: admin

PHP性能优化技巧【译】

今天在逛微博的时候看到了别人转的一篇谷歌的的文章《PHP performance tips》,看了觉得很有用,于是就翻译保存下来。

  1. 概括出你的代码的瓶颈所在

当你尝试让你的网站更快的时候,你需要记住Hoare的名言:不成熟的优化是万恶之源。在你修改你的代码之前,你需要明确是什么造成了网站运行的慢。

  1. 更新你的PHP版本
    

你必须了解的Session的本质

作者:360weboy.com
新浪微博:http://weibo.com/360weboy

有一点我们必须承认,大多数web应用程序都离不开session的使用。这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制。我们先简单的了解一些http的知识,从而理解该协议的无状态特性。然后,学习一些关于cookie的基本操作。最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行。

程序员疫苗:代码注入

几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误。很多程序上错误就像人类世界的病毒一样,我们应该给我们的新入行的程序员注射一些疫苗,就像给新生儿打疫苗一样,希望程序员从入行时就对这些错误有抵抗力。

我的那个疫苗网站正在建议中(不好意思拖了很久),不过,我可以先写一些关于程序员疫苗性质的文章,也算是热热身。希望大家希望,先向大家介绍第一注疫苗——代码注入。…

        

SysRq使用详解

 

曾经啊,对着键盘上 Print Screen/SysRq 的键琢磨许久,也不知道所谓 SysRq 到底是做什么用的。自从用了 linux,才算知道是给内核传递信息,紧急情况下重启系统用的。

因为在 windows 的时候,从来没有用到过这个按键,所以我也就一直忽略掉了它的存在。直到有一天一个 flash 视频全屏后,x 崩溃,不要说进 tty 杀 gnome,就是按下 numberlock 都要反应好一会熄灭…… 幸好我有 SysRq 这个终极武器 :) ,顺利重启系统,避免了当前数据的丢失。

PHP5.5 alpha 的新特性

2012年11月16号PHP5.5的第一个alpha版发布了,里面包含了一些期待已久的特性,以及从其他语言借鉴而来的新特性。本文会浅析这些新特性,使大家对此有所了解。
一,Generators-生成器
使用过Python的人对此并不陌生,生成器的定义是:“生成器是一个函数,它生成一个值的序列,以便在迭代中适用”。
可以简单的理解为一种简单的迭代器的生成方案。(相对于实现PHP中的迭代器,生成器更为便捷)…

mysql REPLACE语句

mysql REPLACE语句 (转)
我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一个主键冲突的错误。当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用 DELETE语句删除原先的记录,然后再使用INSERT插入新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用 REPLACE插入一条记录时,如果不重复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。
使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。
在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。
在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再记录用INSERT来插入这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和插入。
REPLACE的语法和INSERT非常的相似,如下面的REPLACE语句是插入或更新一条记录。
REPLACE INTO users (id,name,age) VALUES(123, '赵本山', 50);
插入多条记录:
REPLACE INTO users(id, name, age) VALUES(123, '赵本山', 50), (134,'Mary',15);
REPLACE也可以使用SET语句
REPLACE INTO users SET id = 123, name = '赵本山', age …

MySQL MyISAM/InnoDB高并发优化经验

最近做的一个应用,功能要求非常简单,就是 key/value 形式的存储,简单的 INSERT/SELECT,没有任何复杂查询,唯一的问题是量非常大,如果目前投入使用,初期的单表 insert 频率约 20Hz(次/秒,我喜欢这个单位,让我想起国内交流电是 50Hz),但我估计以后会有 500Hz+ 的峰值。目前的工作成果,额定功率 200Hz(CPU 占用 10 – 20,load avg = 2),最大功率 500Hz(这时 load avg > 20,很明显,只能暂时挺挺,应该在出现这种负载前提前拆表了)…

    

MySQL my.cnf参数配置优化详解

PS:本配置文件针对Dell R710,双至强E5620、16G内存的硬件配置。CentOS 5.6 64位系统,MySQL 5.5.x 稳定版。适用于日IP 50-100w,PV 100-300w的站点,主要使用InnoDB存储引擎。其他应用环境请根据实际情况来设置优化。

# 以下选项会被MySQL客户端应用读取。
# 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。
# 如果你想你自己的MySQL应用程序获取这些值。
# 需要在MySQL客户端库初始化的时候指定这些选项。…

    

mysql limit 使用优化

mysql limit 使用方法
在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。

SELECT * FROM table   LIMIT [offset,] rows | rows OFFSET offset

LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初 始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。…