MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。
Redis 实现消息队列 MQ
Redis 2.4版本之后就内置队列的功能了,如果是日常比较简单的队列应用,可以选择Redis , 效率还很高的!! Redis 还能实现 有序 和 无序 两种队列(只讨论生产者和消费者这种模式的队列):
Redis 有序集合 ZADD
Redis 的有序集合貌似很厉害,与SQL 中的order其实有点相似;
一、应用场景:排行榜
二、常用的函数命令:
1、ZADD :添加一个或多个成员到有序集合,或者如果它已经存在更新其分数
2、ZRANGE:由索引返回一个成员范围的有序集合
3、ZREM:从有序集合中删除一个或多个成员
如何用C写 PHP扩展
在我们编写自己的第一个php扩展之前,先了解一下php的整体架构和运行机制。 php的架构如图1所示。其中一个重要的就是SAPI(服务器端应用编程端口),它使得PHP可以和其他应用进行数据交互,把外部错综复杂的外部环境进行抽象化,为内部的php提供一套固定和统一的接口,使得php自身不受外部影响,保持一定的独立性。常见的SAPI有CGI,FastCGI,Shell的CLI,apache的mod_php5,IIS的ISAPI。 另外一个非常重要就是ZendEngine。Zend Engine是官方提供的PHP实现的核心,提供了语言实现上的基础设施,其他比较知名的还有facebook的hiphop实现。例如PHP的语法实现,脚本的编译运行环境,扩展机制以及内存管理等。我们在后面编写php扩展时,也将基于Zend Engine。 PHP3时代还是采用边解释边执行的运行方式,这种方式运行效率很受影响,其次代码整体耦合度比较高,可扩展性也不够好。因此随着php在web应用开发中的普及,于是ZeevSuraski和Andi Gutmans决定重写代码以解决这两个问题,最终他们俩把该项技术的核心引擎命名为Zend Engine 。 Zend Engine最主要的特性就是把PHP的边解释边执行的运行方式改为先预编译(Compile),再执行(Execute)。这两者的分开给 PHP 带来了革命性的变化:执行效率大幅提高。由于实行了功能分离,降低了模块间耦合度,可扩展性也大大增强。 目前PHP的实现和Zend Engine之间的关系非常紧密,例如很多PHP扩展都是使用的Zend API,而Zend正是PHP语言本身的实现,PHP只是使用Zend这个内核来构建PHP语言的,而PHP扩展大都使用Zend API,这就导致PHP的很多扩展和Zend引擎耦合在一起了,后来才有PHP核心开发者就提出将这种耦合解开的建议。不过下面我们还下面在Zend Engine的基础上开始编写我们第一个简单的php扩展。
用 Redis 实现无序队列 LPUSH / LPOP
在实际的开发当中,当系统需要使用简单的任务列表的时候,我们可以使用Redis来充当队列(因为Redis本来就自带队列,简单易用,效率也不低,免去使用MQ等麻烦)。 使用Redis的队列,我们要记住2个常用的命令 : LPUSH & LPOP 上面两个命令是不是很熟悉:PUSH 和 POP ,不错,其实就是这个英文,只是在前面加上L大写开头。 上例子(PHP):
ubuntu 下如何使用 apt 批量删除软件
想删除 ubuntu 服务器下的所有 php5.4 的软件,例如:php5.4-cli, php5.4-fpm 等, 但是一个一个来删除,有点难度啊,所以,查了一下,可以使用一下方法: 1、直接 apt-get purge
sudo apt-get purge php5.4*
2、apt-get purge + 筛选函数
sudo apt-get purge `dpkg -l | grep php5.4 | awk ‘{print $2}’ |tr “\n” “ “`
REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR 的区别
看ecshop的lib_base.php的时候里面获取客户端真实ip的函数(real_ip),有许多情况的判断,主要判断客户端是否使用代理的情况,注意判断顺序,先判断客户端是否使用代理HTTP_X_FORWARDED_FOR
MAC OSX下include头文件缺失引起的问题及解决办法: command line tools 安装
安装软件的时候可能出现缺少头文件而导致的安装失败,笔者就尝试过,在安装 pip install Scrapy 的时候,就出现过:
Command “/usr/bin/python -c “import setuptools, tokenize;__file__=’/private/tmp/pip-build-UX3Es9/lxml/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(__file__).read().replace(‘\r\n’, ‘\n’), __file__, ‘exec’))” install –record /tmp/pip-VDXsGm-record/install-record.txt –single-version-externally-managed –compile” failed with error code 1 in /private/tmp/pip-build-UX3Es9/lxml
由此导致 安装 lxml 失败,所以安装 scrapy 失败,各种悲伤。 其实这是由于mac os 中缺少 c变异所需的include 头文件导致的,查看: cd /usr/目录下是否缺少 include 文件夹,如果没有,我们可以通过以下命令安装:
xcode-select –install
执行这条命令后,会出现GUI界面安装程序哦,一直 下一步 下一步 就好,记得,必须在有网络的情况下能安装哦。
magento 1.8.0 的 nginx 配置
server {
listen 80;
server_name abc.com;
rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www
}
server {
listen 80;
server_name www.abc.com;
set $DOC_ROOT d:/abc.com/shop;
root $DOC_ROOT;
location / {
index index.html index.php; ## Allow a static html file to be shown first
try_files $uri $uri/ @handler; ## If missing pass the URI to Magento’s front handler
expires 30d; ## Assume all files are cachable
}
## These locations would be hidden by .htaccess normally
location ^~ /app/ { deny all; }
location ^~ /includes/ { deny all; }
location ^~ /lib/ { deny all; }
location ^~ /media/downloadable/ { deny all; }
location ^~ /pkginfo/ { deny all; }
location ^~ /report/config.xml { deny all; }
location ^~ /var/ { deny all; }
location /var/export/ { ## Allow admins only to view export folder
auth_basic "Restricted"; ## Message shown in login window
auth\_basic\_user_file htpasswd; ## See /etc/nginx/htpassword
autoindex on;
}
location /. { ## Disable .htaccess and other hidden files
return 404;
}
location @handler { ## Magento uses a common front handler
rewrite / /index.php;
}
location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
rewrite ^(.*.php)/ $1 last;
}
location ~ .php$ { ## Execute PHP scripts
if (!-e $request\_filename) { rewrite / /index.php last; } ## Catch 404s that try\_files miss
expires off; ## Do not cache dynamic content
fastcgi_pass 127.0.0.1:9000;
fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script_name;
fastcgi\_param MAGE\_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores
fastcgi\_param MAGE\_RUN_TYPE store;
include fastcgi\_params; ## See /etc/nginx/fastcgi\_params
}
location ~* ^.+\\.(jpg|jpeg|gif|css|png|js|ico)$ {
root $DOC_ROOT;
index index.php;
access_log off;
expires 30d;
}
linux下防火墙的配置
如果大家是使用一键环境(如:lnmp.org),有时候防火墙会被设置成正式环境一样,当你是用作测试服务器的时候,这样就很不方便了。 因此,在这里记录一下linux下防火墙的配置: 地址是:/etc/sysconfig/iptables