apache常用的工作模式有prefork和worker模式。运行命令httpd -l 或者apache2 -l ,输出的结果中如果含有prefork.c,那就是prefork模式,如果结果中含有worker.c,那就是worker模式。
如果apache已经安装,我们可以用"httpd -l"命令查看当前模式。若找到 prefork.c 则表示当前工作在prefork模式,同理出现 worker.c 则工作在worker模式。
如果apache还未安装,我们在编译的时候可以加入 --with-pem=(prefork|worker) 选项决定启用什么模式。
http://wenku.baidu.com/link?url=y3OpHIEd1VLsBxPHeQ8CPb4bPPWnsR6TIejiY1nr8NfSNSzPFVyWuInERBFPX4AOkoo1V0ptdTorPIq21vB8r90IIPX6xR37fZd_x5dEfOe&from_mod=download
httpd -V
Server version: Apache/2.2.3
Architecture: 32-bit
Server MPM: Prefork
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
<IfModule prefork.c>
StartServers 2
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
From:http://blog.csdn.net/aovenus/article/details/6541941
如果apache已经安装,我们可以用"httpd -l"命令查看当前模式。若找到 prefork.c 则表示当前工作在prefork模式,同理出现 worker.c 则工作在worker模式。
如果apache还未安装,我们在编译的时候可以加入 --with-pem=(prefork|worker) 选项决定启用什么模式。
http://wenku.baidu.com/link?url=y3OpHIEd1VLsBxPHeQ8CPb4bPPWnsR6TIejiY1nr8NfSNSzPFVyWuInERBFPX4AOkoo1V0ptdTorPIq21vB8r90IIPX6xR37fZd_x5dEfOe&from_mod=download
httpd -V
Server version: Apache/2.2.3
Architecture: 32-bit
Server MPM: Prefork
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
<IfModule prefork.c>
StartServers 2
MinSpareServers 10
MaxSpareServers 15
ServerLimit 2000
MaxClients 1000
MaxRequestsPerChild 10000
</IfModule>
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
From:http://blog.csdn.net/aovenus/article/details/6541941
[PATH设置]linux中profile的执行说明
Unix/LinuxC技术 jackxiang 2012-10-10 18:14
(1)/etc/profile
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
(2)/ect/bashrc
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc它也是全局(公有)的,bash执行时,不管是何种方式,都会读取此文件。
(3)~/.profile
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。
(4)~/.bash_login
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
(5)~/.bash_profile
Unbutu默认没有此文件,可新建。
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。
(6)~/.bashrc
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
(7)~/.bash_logout
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。
下面是在本机的几个例子:
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
(2)/ect/bashrc
Ubuntu没有此文件,与之对应的是/ect/bash.bashrc它也是全局(公有)的,bash执行时,不管是何种方式,都会读取此文件。
(3)~/.profile
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
另外,图形模式登录时,此文件将被读取,即使存在~/.bash_profile和~/.bash_login。
(4)~/.bash_login
若bash是以login方式执行时,读取~/.bash_profile,若它不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
(5)~/.bash_profile
Unbutu默认没有此文件,可新建。
只有bash是以login形式执行时,才会读取此文件。通常该配置文件还会配置成去读取~/.bashrc。
(6)~/.bashrc
当bash是以non-login形式执行时,读取此文件。若是以login形式执行,则不会读取此文件。
(7)~/.bash_logout
注销时,且是longin形式,此文件才会读取。也就是说,在文本模式注销时,此文件会被读取,图形模式注销时,此文件不会被读取。
下面是在本机的几个例子:
1. 图形模式登录时,顺序读取:/etc/profile和~/.profile
2. 图形模式登录后,打开终端时,顺序读取:/etc/bash.bashrc和~/.bashrc
3. 文本模式登录时,顺序读取:/etc/bash.bashrc,/etc/profile和~/.bash_profile
4. 从其它用户su到该用户,则分两种情况:
(1)如果带-l参数(或-参数,--login参数),如:su -l username,则bash是lonin的,它将顺序读取以下配置文件:/etc/bash.bashrc,/etc/profile和~ /.bash_profile。
(2)如果没有带-l参数,则bash是non-login的,它将顺序读取:/etc/bash.bashrc和~/.bashrc
5. 注销时,或退出su登录的用户,如果是longin方式,那么bash会读取:~/.bash_logout
6. 执行自定义的shell文件时,若使用“bash -l a.sh”的方式,则bash会读取行:/etc/profile和~/.bash_profile,若使用其它方式,如:bash a.sh, ./a.sh,sh a.sh(这个不属于bash shell),则不会读取上面的任何文件。
7. 上面的例子凡是读取到~/.bash_profile的,若该文件不存在,则读取~/.bash_login,若前两者不存在,读取~/.profile。
原文链接: The 7 signs of failure for internet startups
导致互联网初创公司失败的七个信号
1. 不是全职创业
2. 超过四个创始人
3. 没有技术合伙人
4. 没有根据业务类型,选择合适的创业组合
5. 没有实行中央集权
6. 一意孤行,没有汲取客户的反馈
7. 在一个没有经过验证的市场环境,扩张太快
在如果在创业公司的你,闻到了几个信号?
导致互联网初创公司失败的七个信号
1. 不是全职创业
2. 超过四个创始人
3. 没有技术合伙人
4. 没有根据业务类型,选择合适的创业组合
5. 没有实行中央集权
6. 一意孤行,没有汲取客户的反馈
7. 在一个没有经过验证的市场环境,扩张太快
在如果在创业公司的你,闻到了几个信号?
Connection reset by peer: socket write error错误分析:
常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭 (参见setsockopt(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中 断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码WSAECONNRESET。
但是如果频繁出现,就表示很 多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题。
---
备注:如果平时运行得好好的一个程序,在后面用curl去访问时出现了上述范围,其一般来说是网络的问题。
防火墙:引起该问题的原因是由于此时Server端连接已经被复位,而Client依然通过该连接在接收和发送数据,在网上搜索了一下 该错误,发现该错误引起的原因大都是防火墙的原因。
常出现的Connection reset by peer: 原因可能是多方面的,不过更常见的原因是:
①:服务器的并发连接数超过了其承载量,服务器会将其中一些连接Down掉;
②:客户关掉了浏览器,而服务器还在给客户端发送数据;
③:浏览器端按了Stop
通常原因为:远程主机上对等方应用程序突然停止运行,或远程主机重新启动,或远程主机在远程方套接字上使用了“强制”关闭 (参见setsockopt(SO_LINGER))。另外,在一个或多个操作正在进行时,如果连接因“keep-alive”活动检测到一个失败而中 断,也可能导致此错误。此时,正在进行的操作以错误码WSAENETRESET失败返回,后续操作将失败返回错误码WSAECONNRESET。
但是如果频繁出现,就表示很 多客户端连接到Apache服务器的响应时间太长了,可能是网络的问题或者服务器性能问题。
---
备注:如果平时运行得好好的一个程序,在后面用curl去访问时出现了上述范围,其一般来说是网络的问题。
防火墙:引起该问题的原因是由于此时Server端连接已经被复位,而Client依然通过该连接在接收和发送数据,在网上搜索了一下 该错误,发现该错误引起的原因大都是防火墙的原因。
php的filter扩展:在CentOS/RHEL5下安装PHP的filter和json扩展
Php/Js/Shell/Go jackxiang 2012-10-8 14:23
做为一个合格的web开发人员,一定会牢记一个原则——永远不能相信用户输入的数据,行走江湖,安全第一是很重要的。用户通过表单或url传过来的数据,一定要仔细检查过了,才往后台数据库里存进去。在一个成熟的开发团队里,贯彻这个原则不成问题;但是如果在一个新人老手混搭的小team里,很容易就忽视了这个问题,那么各种安全漏洞比如跨站攻击,sql注入等等真是防不胜防。
实际上,用php 5自带的filter扩展能够较好的解决这个问题。我在从前的blog里记录了filter扩展的常规用法——直接利用filter来校验数据,这样有不少额外的代码量,所以我得介绍一个比较偷懒的办法——自动对所有输入变量进行过滤,这只需要对php.ini增加一行配置,然后重启apache或fastcgi让php配置生效。
filter.default=”special_chars”
开启了这项配置后,会自动使用filter_input方法对$_GET, $_POST, $_COOKIE, $_REQUEST以及$_SERVER变量进行过滤转义。配置中special_chars是常量FILTER_SANITIZE_SPECIAL_CHARS的缩写,它能自动转义大部分危险字符例如: '"<>。而php手册对它的解释是:
HTML-escape ‘”<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.
在这个情况下,新人们写出这样的代码我也不会太担心:
$foo = $_GET['foo'];
echo $foo;
在部分场合,我们可能还是需要未转义的变量,比如某个ajax接受的参数是一段json串,用这段代码即可获得原始数据:
$foo = filter_input (INPUT_GET, 'foo', FILTER_UNSAFE_RAW);
fitler扩展与yahoo使用的yiv如出一辙,印象里似乎就是yahoo对yiv做了些修改贡献给php社区,但是暂时没找到出处。
来自:http://www.ooso.net/archives/559
安装:http://blog.suchasplus.com/2008/11/centos-rhel-install-php-5-filter-and-json-extension-howto-chinese.html
【社区开学季】360提供的Php防注入代码,上面这个模块也就不用下面这些代码来防止注入了。
实际上,用php 5自带的filter扩展能够较好的解决这个问题。我在从前的blog里记录了filter扩展的常规用法——直接利用filter来校验数据,这样有不少额外的代码量,所以我得介绍一个比较偷懒的办法——自动对所有输入变量进行过滤,这只需要对php.ini增加一行配置,然后重启apache或fastcgi让php配置生效。
filter.default=”special_chars”
开启了这项配置后,会自动使用filter_input方法对$_GET, $_POST, $_COOKIE, $_REQUEST以及$_SERVER变量进行过滤转义。配置中special_chars是常量FILTER_SANITIZE_SPECIAL_CHARS的缩写,它能自动转义大部分危险字符例如: '"<>。而php手册对它的解释是:
HTML-escape ‘”<>& and characters with ASCII value less than 32, optionally strip or encode other special characters.
在这个情况下,新人们写出这样的代码我也不会太担心:
$foo = $_GET['foo'];
echo $foo;
在部分场合,我们可能还是需要未转义的变量,比如某个ajax接受的参数是一段json串,用这段代码即可获得原始数据:
$foo = filter_input (INPUT_GET, 'foo', FILTER_UNSAFE_RAW);
fitler扩展与yahoo使用的yiv如出一辙,印象里似乎就是yahoo对yiv做了些修改贡献给php社区,但是暂时没找到出处。
来自:http://www.ooso.net/archives/559
安装:http://blog.suchasplus.com/2008/11/centos-rhel-install-php-5-filter-and-json-extension-howto-chinese.html
【社区开学季】360提供的Php防注入代码,上面这个模块也就不用下面这些代码来防止注入了。
PHP的Fileinfo扩展
Php/Js/Shell/Go jackxiang 2012-10-8 14:21
PHP的Fileinfo扩展是libmagic库的一个封装,可以用来获得文件的一些信息,如MIME类型,可以用来更好地代替magic_mime扩展中的 mime_content_type()函数。本文介绍本人在Windows环境下使用Fileinfo扩展获得文件MIME类型的实现步骤:
到下载适合自己PHP版本的Fileinfo扩展到你的PHP扩展目录,即php.ini中由extension_dir指定的目录
将存放文件类型信息的magic和magic.mime两个文件放置到一个目录下,不妨设为E:\php\extras下。这两个文件在附件压缩包中,是我从GnuWin32的share文件夹中提取出来的。其中magic可以用apache的conf目录下的magic代替;PHP的extras文件夹也有一个magic.mime文件,但是用它的话fileinfo扩展无法正确工作,不能用来代替附件中的这个magic.mime
修改php.ini,加入这样一行:
extension=php_fileinfo.dll
之后重新启动web服务器,确认成功加载扩展之后进行下一步代码测试
新建一个php脚本文件,用如下代码进行测试
file($testFile);
?>
输出:application/msword
上述代码中$magicFile即为上述所提到的文件magic,必须保证magic.mime与magic两个文件放在同一个文件夹
到下载适合自己PHP版本的Fileinfo扩展到你的PHP扩展目录,即php.ini中由extension_dir指定的目录
将存放文件类型信息的magic和magic.mime两个文件放置到一个目录下,不妨设为E:\php\extras下。这两个文件在附件压缩包中,是我从GnuWin32的share文件夹中提取出来的。其中magic可以用apache的conf目录下的magic代替;PHP的extras文件夹也有一个magic.mime文件,但是用它的话fileinfo扩展无法正确工作,不能用来代替附件中的这个magic.mime
修改php.ini,加入这样一行:
extension=php_fileinfo.dll
之后重新启动web服务器,确认成功加载扩展之后进行下一步代码测试
新建一个php脚本文件,用如下代码进行测试
file($testFile);
?>
输出:application/msword
上述代码中$magicFile即为上述所提到的文件magic,必须保证magic.mime与magic两个文件放在同一个文件夹
PHP Tokenizer 的学习笔记_PHP教程
Php/Js/Shell/Go jackxiang 2012-10-8 14:17
简述
在某个项目中需要分析 PHP 代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑,这都不是最优的方式。
查询了 PHP 手册,发现其实 PHP 已经内置解析器的接口,那就是 PHP Tokenizer,这工具正是我想要的。使用 PHP Tokenizer 能简单、高效、准确的分析出 PHP 源代码的组成。
实例
官方站点对 Tokenizer 的文档很少,不过这不影响我们理解它。Tokenizer 组件仅仅包含两个函数:token_get_all 以及 token_name,它们分别用于分析 PHP 代码以及获取代码对应的标识符名称。
下面是个简单的实例,说明如何使用这两个函数:
以下为引用的内容:
对应的输出为
以下为引用的内容:
1 - T_OPEN_TAG <?php
1 - T_ECHO echo
1 - T_WHITESPACE
1 - T_CONSTANT_ENCAPSED_STRING "string1"
1 - T_CONSTANT_ENCAPSED_STRING "string2"
1 - T_WHITESPACE
1 - T_CLOSE_TAG ?>
这里顺便说明下,$token 如果为数组,那么分别对应的三个数组成员为 token 标识符(可以用 token_name 获得字面量)、对应的源代码内容、以及对应的行号。
还有中情况就是 $token 为字符串,这可能的情况之一就是为 T_CONSTANT_ENCAPSED_STRING 等常量,在分析代码时要注意。如果对这点很在意,可以考虑使用这里的代码。
是的,调用方式非常的简单,我们的野心当然远远要比写个简单的循环要大得多。我们可以利用这个组件做写实事,例如下面的代码用于“压缩” PHP 代码,去除不不要的换行、空白以及注释
以下为引用的内容:
调用方式很简单,只需要使用
以下为引用的内容:
CompactCode::compact($source_code);
即可,返回的字符串就是压缩以后的内容。
在某个项目中需要分析 PHP 代码,分离出对应的函数调用(以及源代码对应的位置)。虽然这使用正则也可以实现,但无论从效率还是代码复杂度方面考虑,这都不是最优的方式。
查询了 PHP 手册,发现其实 PHP 已经内置解析器的接口,那就是 PHP Tokenizer,这工具正是我想要的。使用 PHP Tokenizer 能简单、高效、准确的分析出 PHP 源代码的组成。
实例
官方站点对 Tokenizer 的文档很少,不过这不影响我们理解它。Tokenizer 组件仅仅包含两个函数:token_get_all 以及 token_name,它们分别用于分析 PHP 代码以及获取代码对应的标识符名称。
下面是个简单的实例,说明如何使用这两个函数:
以下为引用的内容:
对应的输出为
以下为引用的内容:
1 - T_OPEN_TAG <?php
1 - T_ECHO echo
1 - T_WHITESPACE
1 - T_CONSTANT_ENCAPSED_STRING "string1"
1 - T_CONSTANT_ENCAPSED_STRING "string2"
1 - T_WHITESPACE
1 - T_CLOSE_TAG ?>
这里顺便说明下,$token 如果为数组,那么分别对应的三个数组成员为 token 标识符(可以用 token_name 获得字面量)、对应的源代码内容、以及对应的行号。
还有中情况就是 $token 为字符串,这可能的情况之一就是为 T_CONSTANT_ENCAPSED_STRING 等常量,在分析代码时要注意。如果对这点很在意,可以考虑使用这里的代码。
是的,调用方式非常的简单,我们的野心当然远远要比写个简单的循环要大得多。我们可以利用这个组件做写实事,例如下面的代码用于“压缩” PHP 代码,去除不不要的换行、空白以及注释
以下为引用的内容:
调用方式很简单,只需要使用
以下为引用的内容:
CompactCode::compact($source_code);
即可,返回的字符串就是压缩以后的内容。
My set up ,必须要写明路径,否则认不到这个扩展在哪儿:
由于Zend新产品ZendGuardLoader的面世,Zend Optimizer已经不支持php5.3了,官方给出的版本是ZendGuardLoader代替,
zend optimizer是支持php5.2.x系列的!
zend Guard Loader是支持php5.3.x系列的!
也就是说,php5.3.x系列的版本优化引擎改为了zend Guard Loader。
ZendGuardLoader的安装还是和原版差不多的
下文的 php.ini(再php.ini 最后的地方加上) 文件根据实际情况修改成你服务器上的路径
[Zend Guard Loader]
zend_extension="E:\wamp\bin\zend\ZendGuardLoader-php-5.3-Windows\php-5.3.x\ZendLoader.dll"
重启。
HP 5.3 安装 Zend Guard Loader 说明
PHP 5.3 下,Zend Optimizer 已经被全新的 Zend Guard Loader 取代
------------------------------------------------
1. 下载 Zend Guard Loader 压缩包。(官方下载地址:http://www.zend.com/en/products/guard/downloads)
2. 解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的PHP版本。
3. 在你的 php.ini 文件添加下面一行,用来加载 Zend Guard Loader:
Linux 和 Mac OS X: zend_extension = 完整路径/ZendGuardLoader.so
Windows(非线程安全): zend_extension = 完整路径/ZendLoader.dll
4. 在 php.ini 额外新增一行,启用 Zend Guard Loader:
zend_loader.enable = 1
5. 可选:可以在 php.ini 文件添加以下行到 Zend Guard Loader 配置位置:
;禁用许可证检查(为了性能的原因)
zend_loader.disable_licensing = 0
;让 Zend Guard Loader 支持混淆级别。级别在 Zend Guard 的官方详细文档。 0 - 不启用混淆
zend_loader.obfuscation_level_support = 3
;从这个路径寻找Zend产品授权的产品许可证。欲了解更多有关如何创建一个许可证文件的信息,请参阅 Zend Guard 用户指南.
zend_loader.license_path =
6. 如果您使用 Zend debugger,请确保加载 Zend guard Loader。
7. 如果您使用 ioncube loader,请务必在它之前加载 Zend guard Loader。
8. 重新启动Web服务器。
-------------------------------------------
转载请注明出处:http://hi.baidu.com/phpbuff/blog/item/2470f4d63fb58e3906088bb8.html
ea和zguard同时安装:
http://www.ithov.com/linux/107828_2.shtml
http://hi.baidu.com/cyzxlsf/item/05c413d1637091302a35c7dc
http://www.doc88.com/p-993593494490.html
DownLoad: http://www.zend.com/en/products/guard/downloads
由于Zend新产品ZendGuardLoader的面世,Zend Optimizer已经不支持php5.3了,官方给出的版本是ZendGuardLoader代替,
zend optimizer是支持php5.2.x系列的!
zend Guard Loader是支持php5.3.x系列的!
也就是说,php5.3.x系列的版本优化引擎改为了zend Guard Loader。
ZendGuardLoader的安装还是和原版差不多的
下文的 php.ini(再php.ini 最后的地方加上) 文件根据实际情况修改成你服务器上的路径
[Zend Guard Loader]
zend_extension="E:\wamp\bin\zend\ZendGuardLoader-php-5.3-Windows\php-5.3.x\ZendLoader.dll"
重启。
HP 5.3 安装 Zend Guard Loader 说明
PHP 5.3 下,Zend Optimizer 已经被全新的 Zend Guard Loader 取代
------------------------------------------------
1. 下载 Zend Guard Loader 压缩包。(官方下载地址:http://www.zend.com/en/products/guard/downloads)
2. 解压并提取 ZendGuardLoader.so(Linux)或 ZendLoader.dll(Windows),对应你的PHP版本。
3. 在你的 php.ini 文件添加下面一行,用来加载 Zend Guard Loader:
Linux 和 Mac OS X: zend_extension = 完整路径/ZendGuardLoader.so
Windows(非线程安全): zend_extension = 完整路径/ZendLoader.dll
4. 在 php.ini 额外新增一行,启用 Zend Guard Loader:
zend_loader.enable = 1
5. 可选:可以在 php.ini 文件添加以下行到 Zend Guard Loader 配置位置:
;禁用许可证检查(为了性能的原因)
zend_loader.disable_licensing = 0
;让 Zend Guard Loader 支持混淆级别。级别在 Zend Guard 的官方详细文档。 0 - 不启用混淆
zend_loader.obfuscation_level_support = 3
;从这个路径寻找Zend产品授权的产品许可证。欲了解更多有关如何创建一个许可证文件的信息,请参阅 Zend Guard 用户指南.
zend_loader.license_path =
6. 如果您使用 Zend debugger,请确保加载 Zend guard Loader。
7. 如果您使用 ioncube loader,请务必在它之前加载 Zend guard Loader。
8. 重新启动Web服务器。
-------------------------------------------
转载请注明出处:http://hi.baidu.com/phpbuff/blog/item/2470f4d63fb58e3906088bb8.html
ea和zguard同时安装:
http://www.ithov.com/linux/107828_2.shtml
http://hi.baidu.com/cyzxlsf/item/05c413d1637091302a35c7dc
http://www.doc88.com/p-993593494490.html
DownLoad: http://www.zend.com/en/products/guard/downloads
各种浏览器如何模拟在较低网速下对同一网页浏览的一个情况
Php/Js/Shell/Go jackxiang 2012-9-29 16:15
在做一些测试时,往往自己是搞开发的,网速还成,但是我们的用户会在偏远的山区,56K上网,为此,我们能保证我们看到的就是用户看到的么?当然不能,尤其是图片和css在一个较低的网速加载时会出现变形,图片加载时出现Load不进来,这一切都不是我们能预料的,为此,我们的网络是快,但我们的用户可能会用一个慢的网速来访问,会有各种情况,所以,我们必须和果模拟出这样一种情形,好提高我们的访问质量。
有同事推荐,NetLimiter这个软件,我是Win7,发现确实不怎么的,安都安不上,于是重启动了电脑,同事说是QQ电脑管家有一个这样的软件,So,我又没有安这个(当时安了做了下更新,后来就卸载了,不想让它更新Win7,再就是占用资源),在网上闲逛了一下,发现有一个这样的独立软件可以用,太好了,Url:http://www.huacolor.com/soft/59780.html 名字: 网络流量管理器 6.8.2383.401正式版(QQ电脑管家提取版).rar ,这个是个好玩意,呵呵,在此介绍给大家,至于怎么用,参考:http://www.duote.com/tech/5/14227.html
有同事推荐,NetLimiter这个软件,我是Win7,发现确实不怎么的,安都安不上,于是重启动了电脑,同事说是QQ电脑管家有一个这样的软件,So,我又没有安这个(当时安了做了下更新,后来就卸载了,不想让它更新Win7,再就是占用资源),在网上闲逛了一下,发现有一个这样的独立软件可以用,太好了,Url:http://www.huacolor.com/soft/59780.html 名字: 网络流量管理器 6.8.2383.401正式版(QQ电脑管家提取版).rar ,这个是个好玩意,呵呵,在此介绍给大家,至于怎么用,参考:http://www.duote.com/tech/5/14227.html
PHP类对象多重赋值,出现了很多个->的情况备案。
Php/Js/Shell/Go jackxiang 2012-9-28 17:59
PHP中类的对象经类的重重包含在找出一原先类里的某个变量时出现多次->的原因探究:
其之所以出现多个->,让人一看还真的蒙了,特别是给你看一段代码片段,蒙了,于是经过推敲后,得出如下代码:
其之所以出现多个->,让人一看还真的蒙了,特别是给你看一段代码片段,蒙了,于是经过推敲后,得出如下代码:
[上线用到]yuicompressor-2.4.2,js,css代码压缩。
Php/Js/Shell/Go jackxiang 2012-9-27 15:19
压缩会出现js错误最多的就是少分号,怎么解决避免的:
常看到一些大牛的JS源码 在function 前面加;
;function($,undefined) 是什么用处 ?
;(function($){$.extend($.fn...
现般在一些 JQuery 函数前面有分号
在前面加分号可以有多种用途:
1、防止多文件集成成一个文件后,高压缩出现语法错误。
2、这是一个匿名函数,一般js库都采用这种自执行的匿名函数来保护内部变量 (function(){})()
3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能
————————————————————————————————————————————————————
Yahoo!给我们带来了YUI compressor!
一.安装Java,配置环境变量。http://java.sun.com/javase/downloads/index.jsp
下载,安装,一路Next,没有任何问题,对了,你可以修改一下路径。
安装完毕以后,需要配置一下JAVA_HOME环境变量。
配置方法如下。
1、点击我的电脑—>属相—>高级—>环境变量—>系统变量
2、新建变量,变量名JAVA_HOME 路径:E:\Program Files\Java\jdk1.6.0_11 (我的是在E盘,你的JDK安装到那个盘,就写那个盘)
3、找到path变量,在后面添加路径:;%JAVA_HOME%\jre6\bin
OK,一路确定,关闭窗口。
打开CMD,输入java -version
看看能不能出来版本?
java version “1.6.0_11″
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
二:直接调用包的执行代码:java -jar E:/Tool/yuicompressor/yuicompressor-2.4.2.jar E:/CMS.ContentPager.js -o E:/CMS.ContentPager-min.js --charset utf-8
三:压缩示例,压缩实现:
使用yuicompressor-2.4.2.jar对js文件进行压缩和输出。
示例如下:
Java -jar yuicompressor-2.4.2.jar public.js -o compress/public.js --charset=utf-8
命令说明:
1. java –jar 执行jar包内的主函数
2. public.js 将被压缩的原版JS文件
3. –o 压缩后输出 后面是输出文件路径
4. –charset 压缩文件的编码格式
四:实际运用时,要注意目录中有空格的情况,会出现:Unable to access jarfile D:/Program,要用双引号引起来即可。
cd D:\Program Files\yuicompressor
DownLoad:
参考(带文件下载):http://yekui.iteye.com/blog/819278
以上来自来自:
http://yui.github.io/yuicompressor/
在线web压缩:http://ganquan.info/yui/?hl=zh-CN
TBCompressor 基于YUICompressor的淘宝封装的css和js压缩工具(不用命令,直接合用的批处理工具):
http://www.jb51.net/softs/25860.html
描述实现方法:http://wenku.baidu.com/view/163a48f3770bf78a65295423.html
UI界面版本CSDN下载:http://download.csdn.net/download/tianqi520/1499680
Bat脚本实现批量压缩:http://www.cnblogs.com/heiniuhaha/archive/2011/06/15/YUI-Compressor.html
这个哥们写了一个,感觉界面不错利用YUI Compressor :
http://www.ninja911.com/blog/?p=345
-----------【相关下载】-----------
YUI Compressor [ http://yuilibrary.com/downloads/ ]
CSDN:NBCompressor_v1.2.0.2 附带 aauto ,利用YUI Compressor :
http://download.csdn.net/download/anto72/6328001
常看到一些大牛的JS源码 在function 前面加;
;function($,undefined) 是什么用处 ?
;(function($){$.extend($.fn...
现般在一些 JQuery 函数前面有分号
在前面加分号可以有多种用途:
1、防止多文件集成成一个文件后,高压缩出现语法错误。
2、这是一个匿名函数,一般js库都采用这种自执行的匿名函数来保护内部变量 (function(){})()
3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能
————————————————————————————————————————————————————
Yahoo!给我们带来了YUI compressor!
一.安装Java,配置环境变量。http://java.sun.com/javase/downloads/index.jsp
下载,安装,一路Next,没有任何问题,对了,你可以修改一下路径。
安装完毕以后,需要配置一下JAVA_HOME环境变量。
配置方法如下。
1、点击我的电脑—>属相—>高级—>环境变量—>系统变量
2、新建变量,变量名JAVA_HOME 路径:E:\Program Files\Java\jdk1.6.0_11 (我的是在E盘,你的JDK安装到那个盘,就写那个盘)
3、找到path变量,在后面添加路径:;%JAVA_HOME%\jre6\bin
OK,一路确定,关闭窗口。
打开CMD,输入java -version
看看能不能出来版本?
java version “1.6.0_11″
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) Client VM (build 11.0-b16, mixed mode, sharing)
二:直接调用包的执行代码:java -jar E:/Tool/yuicompressor/yuicompressor-2.4.2.jar E:/CMS.ContentPager.js -o E:/CMS.ContentPager-min.js --charset utf-8
三:压缩示例,压缩实现:
使用yuicompressor-2.4.2.jar对js文件进行压缩和输出。
示例如下:
Java -jar yuicompressor-2.4.2.jar public.js -o compress/public.js --charset=utf-8
命令说明:
1. java –jar 执行jar包内的主函数
2. public.js 将被压缩的原版JS文件
3. –o 压缩后输出 后面是输出文件路径
4. –charset 压缩文件的编码格式
四:实际运用时,要注意目录中有空格的情况,会出现:Unable to access jarfile D:/Program,要用双引号引起来即可。
cd D:\Program Files\yuicompressor
DownLoad:
下载文件
参考(带文件下载):http://yekui.iteye.com/blog/819278
以上来自来自:
http://yui.github.io/yuicompressor/
在线web压缩:http://ganquan.info/yui/?hl=zh-CN
TBCompressor 基于YUICompressor的淘宝封装的css和js压缩工具(不用命令,直接合用的批处理工具):
http://www.jb51.net/softs/25860.html
描述实现方法:http://wenku.baidu.com/view/163a48f3770bf78a65295423.html
UI界面版本CSDN下载:http://download.csdn.net/download/tianqi520/1499680
Bat脚本实现批量压缩:http://www.cnblogs.com/heiniuhaha/archive/2011/06/15/YUI-Compressor.html
这个哥们写了一个,感觉界面不错利用YUI Compressor :
http://www.ninja911.com/blog/?p=345
-----------【相关下载】-----------
YUI Compressor [ http://yuilibrary.com/downloads/ ]
CSDN:NBCompressor_v1.2.0.2 附带 aauto ,利用YUI Compressor :
http://download.csdn.net/download/anto72/6328001
json文件格式的查询工具
Php/Js/Shell/Go jackxiang 2012-9-26 11:03
前一阶段开发ios手机程序,客户端和服务器端主要通过json传输数据内容。从服务器端返回来的数据内容是json格式,查看很不方便,因此在网上找到如下的查询工具,方便查询。
我们知道Json是一种特殊Javascript对象,介绍几个Json查看工具。
http://jsonviewer.codeplex.com/
.Net开发的Json查看器,可反编译查看源码,呵呵。
https://addons.mozilla.org/en-us/firefox/addon/jsonview/
火狐的Json查看器插件,可在火狐中打开Json内容查看
https://chrome.google.com/extensions/detail/chklaanhfefbnpoihckbnefhakgolnmc
谷歌浏览器的Json查看器插件,功能同上
http://jsonviewer.stack.hu/
本文来自:http://blog.csdn.net/z343929897/article/details/8009106
最后,我自己的工具:http://tools.jackxiang.com/ 里面有一个Json编辑器。
我们知道Json是一种特殊Javascript对象,介绍几个Json查看工具。
http://jsonviewer.codeplex.com/
.Net开发的Json查看器,可反编译查看源码,呵呵。
https://addons.mozilla.org/en-us/firefox/addon/jsonview/
火狐的Json查看器插件,可在火狐中打开Json内容查看
https://chrome.google.com/extensions/detail/chklaanhfefbnpoihckbnefhakgolnmc
谷歌浏览器的Json查看器插件,功能同上
http://jsonviewer.stack.hu/
本文来自:http://blog.csdn.net/z343929897/article/details/8009106
最后,我自己的工具:http://tools.jackxiang.com/ 里面有一个Json编辑器。
一本全面的Node.js教程及node.js和php性能测试。
Php/Js/Shell/Go jackxiang 2012-9-26 09:51
这书花了两个小时看了一下,这门子语言简单,且实用,就像是搭建积木一样,呵呵,异步等是它的亮点,但PHP+Nginx也有类似的处理,该书Url:
http://www.nodebeginner.org/index-zh-cn.html#a-basic-http-server
再就是node.js和php性能测试 :
http://www.jiangmiao.org/blog/2491.html
http://snoopyxdy.blog.163.com/blog/static/60117440201183101319257/
后记:
Node.js并不适合需要与用户实时交互的系统;它适合集中处理用户发来的大规模“指令”,即不需要及时看到结果的请求。比如微博系统,用户发表一条微博,可能需要在服务器上排队1分钟才能最终保存到数据库。在这一分钟里,用户更多地是看看别人发表的微博,并不十分迫切地想看到自己那条微博。如果希望有更好的体验,其实可以用DOM直接把用户发表的微博先更新到当前页面,同时使用Ajax异步请求保存这条数据。
node作为一种新型的服务器语言从被认可,到广泛用于生产环境要走的路还很长。
个人总结:
node适用小型/单一的任务型应用,具备高效率的特性,例如计数器/访问足迹/comment等高并发ajax操作,结合缓存/nosql和队列是个不错的选择;但做完整项目可能略显复杂,容易导致控制流倒置。
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
http://www.nodebeginner.org/index-zh-cn.html#a-basic-http-server
再就是node.js和php性能测试 :
http://www.jiangmiao.org/blog/2491.html
http://snoopyxdy.blog.163.com/blog/static/60117440201183101319257/
后记:
Node.js并不适合需要与用户实时交互的系统;它适合集中处理用户发来的大规模“指令”,即不需要及时看到结果的请求。比如微博系统,用户发表一条微博,可能需要在服务器上排队1分钟才能最终保存到数据库。在这一分钟里,用户更多地是看看别人发表的微博,并不十分迫切地想看到自己那条微博。如果希望有更好的体验,其实可以用DOM直接把用户发表的微博先更新到当前页面,同时使用Ajax异步请求保存这条数据。
node作为一种新型的服务器语言从被认可,到广泛用于生产环境要走的路还很长。
个人总结:
node适用小型/单一的任务型应用,具备高效率的特性,例如计数器/访问足迹/comment等高并发ajax操作,结合缓存/nosql和队列是个不错的选择;但做完整项目可能略显复杂,容易导致控制流倒置。
人生苦短, Pythonic! 冗余不做,日子甭过!备份不做,十恶不赦!
jQuery链式语法 用js生成页面 并且响应click事件
Php/Js/Shell/Go jackxiang 2012-9-26 09:37
里面的End用法参看:http://www.jackxiang.com/post/4763/
阅读全文
阅读全文
ios产品越狱以后,发现可以安装ssh server,于是开始了ssh ipad的过程。
1、环境
ipad 3代,ios,5.** 已经 越狱
2、首先安装ssh服务
可以直接从cydia中下载openssh即可,具体安装过程省略
3、登录过程
我在SecureCRT中直接登录ssh ip -l root,root默认密码为alpine,记住马上修改你的密码(安全呀)
passwd root
new pwd:
confirm new pwd:
4、发现
执行uname,发现是Darwin,苹果早期的os原型
然后在etc下发现了apt目录,居然可以类似ubuntu一样使用apt,直接安装了vim: aptget install vim即可成功,意外收获
5、可惜ipad放在哪里一段时间后,wifi就断开了,可能需要一个插件吧,让其wifi长链接,这样就可以吧ipad堪称一个类linux的服务器使用了,呵呵
Ipad 存照片位置:
/private/var/mobile/Media/DCIM/100APPLE
QQMusic放音乐的位置:
/private/var/mobile/Applications/DB55E674-3398-4E0F-B562-7BE03857B9F3/Documents
1、环境
ipad 3代,ios,5.** 已经 越狱
2、首先安装ssh服务
可以直接从cydia中下载openssh即可,具体安装过程省略
3、登录过程
我在SecureCRT中直接登录ssh ip -l root,root默认密码为alpine,记住马上修改你的密码(安全呀)
passwd root
new pwd:
confirm new pwd:
4、发现
执行uname,发现是Darwin,苹果早期的os原型
然后在etc下发现了apt目录,居然可以类似ubuntu一样使用apt,直接安装了vim: aptget install vim即可成功,意外收获
5、可惜ipad放在哪里一段时间后,wifi就断开了,可能需要一个插件吧,让其wifi长链接,这样就可以吧ipad堪称一个类linux的服务器使用了,呵呵
Ipad 存照片位置:
/private/var/mobile/Media/DCIM/100APPLE
QQMusic放音乐的位置:
/private/var/mobile/Applications/DB55E674-3398-4E0F-B562-7BE03857B9F3/Documents
[转载评论]Web的Server PUSH架构将是未来主流
Php/Js/Shell/Go jackxiang 2012-9-17 18:08
Rango 18:02:56
http://matyhtf.iteye.com/blog/1679051
回忆未来-向东 18:05:11
对你这篇文章提到了Erlang,其中说到Push这一块,也是我研究的原因,你这块有实例吧?Push到浏览器的实例。
当年搜狐的白社会就是用的Erlang能并发2W,但没有做起来,技术已经是相当先进了。
Rango 18:05:56
只有测试的例子。目前还没有完整的方案
呵呵,并发2W不算什么。
搞到20W都不成问题
回忆未来-向东 18:06:21
带逻辑的,所以并发可能要低一点儿。
Rango 18:06:38
并发跟这个没关系,RPS和同时连接数
...
Rango 18:22:01
对啊。一直保持的,长连接
需要在你的代码中自己去选择关闭
回忆未来 18:22:14
为何要长连接?
Rango 18:22:26
swoole_server_close
...
阅读全文
http://matyhtf.iteye.com/blog/1679051
回忆未来-向东 18:05:11
对你这篇文章提到了Erlang,其中说到Push这一块,也是我研究的原因,你这块有实例吧?Push到浏览器的实例。
当年搜狐的白社会就是用的Erlang能并发2W,但没有做起来,技术已经是相当先进了。
Rango 18:05:56
只有测试的例子。目前还没有完整的方案
呵呵,并发2W不算什么。
搞到20W都不成问题
回忆未来-向东 18:06:21
带逻辑的,所以并发可能要低一点儿。
Rango 18:06:38
并发跟这个没关系,RPS和同时连接数
...
Rango 18:22:01
对啊。一直保持的,长连接
需要在你的代码中自己去选择关闭
回忆未来 18:22:14
为何要长连接?
Rango 18:22:26
swoole_server_close
...
阅读全文
PHP 使用 APC 增進執行速度之apc_stat=0。
Php/Js/Shell/Go jackxiang 2012-9-15 22:16
PHP APC apc stat=0:
如果你覺得自己的 PHP 網站不快,可以在自己的 php.ini 裡面,load 進來 apc.so 後面加上 apc.stat=0 ,對樣對網站的效能會有顯著地提昇。原理是因為 APC 在每次讀取 PHP 程式碼的時候,都會先 stat() 程式碼所在的檔案,以確定要不要重新編譯成 OPCODE ,而 apc.stat=0 則是直接省略 stat() 的步驟,拿原本就有的 opcode 來用。
而當使用了 APC 並且設置 apc.stat=0 之後,其實網站在第一次編譯成 OPCODE 之後,除非重起或是清除快取,要不然就是會一直拿 OPCODE 來跑,而這樣速度也因此有了顯著的提升
当然重启动一下Apache也是可以自动再次加载一次的。
阅读全文
如果你覺得自己的 PHP 網站不快,可以在自己的 php.ini 裡面,load 進來 apc.so 後面加上 apc.stat=0 ,對樣對網站的效能會有顯著地提昇。原理是因為 APC 在每次讀取 PHP 程式碼的時候,都會先 stat() 程式碼所在的檔案,以確定要不要重新編譯成 OPCODE ,而 apc.stat=0 則是直接省略 stat() 的步驟,拿原本就有的 opcode 來用。
而當使用了 APC 並且設置 apc.stat=0 之後,其實網站在第一次編譯成 OPCODE 之後,除非重起或是清除快取,要不然就是會一直拿 OPCODE 來跑,而這樣速度也因此有了顯著的提升
当然重启动一下Apache也是可以自动再次加载一次的。
阅读全文