这段时间在折腾些PHP中共享内存的方案。
提到PHP共享内存朋友们都说:怎么不用memcache呢?
之所以不用memcache主要有两方面原因:
1、从官方下载的都是源文件需要编译,觉得太麻烦了。
2、在单台服务器的情况下,memcache这种客户端/服务端模式共享内存方案速度较APC这种服务器直接操作内存慢。

Alternative PHP Cache(APC)是 PHP 的一个免费公开的优化代码缓存。它用来提供免费,公开并且强健的架构来缓存和优化 PHP 的中间代码。

APC是PECL(PHP Extension Community Library)扩展的一部份,未捆绑在PHP安装文件中。关于APC的安装,网上有很多讲安装配置的文章。
不过我安装时下载地址找了很久,该扩展的官方地址是http://pecl.php.net/package/APC,但这上面提供的都是未编译的文件。粗略看了下,在WIN32上编译PHP源码(查看)。

PECL fro Windows站点(http://pecl4win.php.net/)目前也暂时关闭了,后来发现原来PHP官方的这个页面提供下载编译了的APC。

安装很简单,修改php.ini文件,添加extension=php_apc.dll即可。

折腾了一番,下面是用APC共享内存时经常会用到的函数:

bool apc_add ( string $key , mixed $var [, int $ttl = 0 ] )
添加一组键值到内存中,如果$key已经存在则返回false。变量生存周期$ttl单位为秒。

bool apc_store ( string $key , mixed $var [, int $ttl = 0 ] )
添加一组键值到内存中,如果$key已经存在则覆盖。变量生存周期$ttl单位为秒。

mixed apc_exists ( mixed $keys )
检查内存中是否存在键$keys。

mixed apc_fetch ( mixed $key [, bool &$success ] )
从内存中取出键$key对应的值。

bool apc_delete ( string $key )
从内存中删除键名为$key的值。

更多函数请参考这里:http://cn.php.net/manual/en/book.apc.php


来源:http://i.80tvb.com/php-apc-memory/
      今天群里有人问关于生成唯一id的问题,有人说用uniqid来生成,但也有人说这个生成的id未必是唯一,尤其在高并发时,原文如下:
      项目是一个高并发的web项目,并且会有后台进程(pcntl并发),两者都会利用uniqid去生成唯一id,今天发现一个bug,在高并发情况下,uniqid可能产生重复输出

以下是测试代码:



测试方法: 命令行运行此程序,重定向输出到文件,然后利用下面程序检查重复:



解决方法: 我们现在是在uniqid后又加了rand(1, 10000),在1000并发,每进程10次uniqid的情况下,再没有产生重复。

来自:http://www.dewen.org/q/1425
超好的HTML解析工具PHP Simple HTML DOM Parser 中文手册
  采用PHP5+开发的一个简单的PHP HTML DOM分析,支持invalid HTML并提供非常简单的方式来操作HTML元素。在HMTL页面上查找标签所使用的语法与jQuery(一个轻量级,实用的javascript框架)相似。从页面中抽取内容只需要一行代码。
手册地址:http://www.kg-led.com/phpgrid/simplehtml/阅读全文
背景:zend studio 12.0.2 修复了一个12.0.1的:  Fixed problem with referenced variables marked as undefined,我都说好像有问题,刚开始还以为是破解得有问题呢。 AddTime:2015-4-5
zend studio 12.0.2 破解&keygen:
http://download.csdn.net/detail/wfstock/8418635


破解ZendStudio 10.1:
刚才装了个ZendStudio 10.1, 发现中文网络上没有可用的破解文件, 就来分享个



直接升级后,因为之前目录是12.0.1现在想修改一下发现报错:
提示:The Zend Studio executable launcher was unable to locate its companion shared library.
打开:ZendStudio.ini 修改下12.0.1指向:12.0.2

D:\Program Files\Zend\Zend Studio 12.0.2\plugins\org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
D:\Program Files\Zend\Zend Studio 12.0.2\plugins\org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20140603-1326

修改后就打开了,再就是打开后把工作空间切换一下即可:
D:\Program Files\Zend\Zend Studio 12.0.1\workspaces\DefaultWorkspace
D:\Program Files\Zend\Zend Studio 12.0.2\workspaces\DefaultWorkspace

破解文件的网盘地址:
http://pan.baidu.com/share/link?shareid=3381476648&uk=1342500274

解压缩后有俩jar文件, 一个是放在/zendstudio_install_path/plugins目录下用于覆盖同名文件的jar,
一个是用来运行的keygen.jar,  java -jar keygen.jar即可执行

来自:http://blog.suchasplus.com/mt/mt-search.cgi?blog_id=3&tag=zendstudio&limit=20

!!!特别注意:
上述实践都还Ok,特别注意的是,前晚别汉化,汉化后就玩完了,要输入注册码,还好我已经习惯了。
---------------------------------------------------------------------------------------------------------------------------------------
Last update:
http://www.geekso.com/component/zendstudio-downloads/
这儿提供的那个jar包好实践是可以安装那个jquery插件的,汉化也是没有问题的,所以,还是用它吧。:-)

Zend Studio 12.0.1 汉化
1.Help->Install New Software
2.在Work with框中复制此地址:http://download.eclipse.org/technology/babel/update-site/R0.12.1/juno/
3.复制完地址后按回车键确认,这时会提示pending...(等待...),等侍完成后会出来很多语言列表让你选择,
4.请选择“Babel Language Packs in Chinese(Simplified)”简体中文包选择项,下一步,再同意,就自动安装了,安装完以后会重启

上面划R0.12.1的版本后有变,获取方式:
进入http://www.eclipse.org/babel/downloads.php,看看语言包更新到哪个版本了,把删除线部分的版本号改成当前版本号就OK了
---------------------------------------------------------------------------------------------------------------------------------------

zend studio 9.0.1换行格式由windows的换行符设置为UNIX下的换行符,zend studio 9.0.1 如何取消显示换行符和空格符,:
http://www.jackxiang.com/post/4897/
此次补充如下:
Zend studio 10.0果然好了不少,主要是快了,尽管用了教旧的Eclipse:
此次正式版比上一版的测试版的性能要好很多,主要是因为测试版用的是最新的Eclipse 4.2.1(新版本Eclipse性能确实不怎么样),而正式版放弃了最新的Eclipse,而使用了Eclipse 3.8.1 juno版,性能大大提升,推荐升级此版本。
0.代码颜色之eot设置:
Window->Preferences->PHP->Editor->Syntax Coloring
注释  HereDoc  #FF4400  255,68,0  这个就是eot的颜色,如:
$elements['mainpage']=<<<eot

eot;

1.汉化:
zend studio 10汉化Url:(刚出来的最新版)
http://archive.eclipse.org/technology/babel/update-site/R0.10.0/helios/
zend studio 12.5.1 汉化 -
http://download.eclipse.org/technology/babel/update-site/R0.12.1/juno/
------------------------------------------------------------------------------------------------------------------------------
Zend Studio10.1出现Call to undefined function
如果你在用 Zend Studio 编写 PHP 项目时发现调用系统函数时调试正常, 但是在编写代码时却提示函数未定义”Call to undefined function ‘xxx’”, 在左侧语法检测状态区域栏总是显示个小黄色的三角形的感叹号, 实在是看着扎眼.

解决办法:
1, 修改项目 .buildpath 文件(不用)
2, 重置项目编译状态
Project -> Clean -> Clean all projects
3, 重新编译项目
Project -> Build All
4, 完成! 再看看是不是小黄色的感冒号图标消失啦~
------------------------------------------------------------------------------------------------------------------------------

2.字体及样式:
    1)字体:
 没想到zend studio 9中对中文显示不太好看,似乎有点小了。修改如下:打开Window->Preferences->General->Appearance->Colors and Fonts,找到Basic->Text Font,如果想用系统默认字体,就点Use System Font,我知道你似乎也不太愿意用系统默认字体,那就点Edit选择你想要的字体吧。

  这时win7用户可能会出现一种情况(XP不知道,其他系统也不清楚),发现字体列表里,没自己想要的字体,明明系统中有N多字体,这里才显示了一小部分。遇到这种情况可以点“显示更多字体”,会打开系统字体文件夹,找到你想要的字体,应该是隐藏属性,然后就 右键->显示,就OK了。选择后点 确定->apply->OK就可以了。

  本人比较喜欢Courier New字体作为代码编辑字体:
      Eclipse设置Courier New字体,这种情况基本上都发生在win7下面,解决的办法很简单:
Preferences-〉general-〉Appearance->Colors and Fonts
改成 Courier New 10号就行了
过去我还用过Courier / Courier New ,也挺不错。但是不知道为什么,现在在win7上的SecureCRT中找不到这两种字体了:
如果你在列表里看不到 Courier New ,就到控制面板->字体,找到Courier New,右键,显示。
然后回到eclipse关掉字体列表重新打开。就能在列表里看到 Courier New 了。
    2)样式:
  目前感觉zend studio自带的PHP代码着色方案不是很好,特别是关键字没有高亮,修改方法也很简单。Window->Preferences->PHP->Editor->Syntax Coloring。修改对应的颜色就可以了。下面提供一套仿dreamweaver的着色方案,仅供参考。

中文  英文  HEX  RGB
变量            Variable  #0066FF  0,102,255
字符串  String  #CC0000  0,12,0
常数/内部常数  constants/internal constants  #552200  85,34,0
数字  Number  #FF0000  255,0,0
保留关键字  Keyword  #006600  0,102,0
块分隔符  PHP tags  #FF0000  255,0,0
注释  PHPDoc comment  #FF9900  255,135,0
注释  PHPDoc  #FF4400  255,68,0
单/多行注释  Single/Multi-line comment  #FF9900  255,135,0

3.PHP里的tab转为4空格设定,修改Zend Studio的tab键为4个space:
然后依次找到PHP – Code Style – Formatter,Edit里有一个Indentation Tab Policy:Space ,Indentation Size:4.
PHP Conventions Jack[built-in]
修改Zend Studio的tab键为4个space
Window->preferences->PHP->Code Style->Formatter->右边show按钮->spaces->4,改好好随便起一个名字就可以了。
JS的也可以一样修改,位置:
Window->preferences->JavaScript->Code Style->Formatter->右边show按钮->spaces->4,改好好随便起一个名字就可以了。
后记,PHP和JavaScript的tab转code最快找到方法是搜索:Window->preferences里输入tab,这样容易找到各种tab相关设置。
4.高亮:
窗口(windows) -> 首选项(preferences) -> 常规(general) -> 外观(apprearcn) -> 颜色和字体(color and font) -> 基本 -> 文本字体(text font)

5.折叠:
   ctrl + / [小键盘的斜杠,如是笔记本就不行了,那个斜杠是用来做注释的]。
解决办法:
Window -> Preferences -> General -> Appearance -> Colors and Fonts -> Basic -> Text Font -> Change
选择 BitStream Vera Sans Mono (其他几个BitStream的字体应该也可以)
代码默认不折叠的设置:
进入window菜单->preferences,在左边找到PHP项,然后找到Editor->Code Folding,里面有Enable folding的选项,去掉就可以了。
注意:如果左边选的是General,则在Editor的Stuctured Text Editors中也有Enable folding的选项。不过实验证明这个选项不能控制打开时代码的折叠,只对当前编辑的有效。

杂七杂八:
1)高亮:
  安装Aptana3中高亮显示相同变量(实践OK),这个经过上面的模拟Dreamweaver样式修改后不用了。
Window -> preferences -> Aptana Studio -> Editors -> PHP
选中 Mark occurrences with background color 其中选项 Global variables 就是高亮显示相同变量
==================================================================
我的实践: PHP->editor-> Mark occurrences with
==================================================================

2)背景颜色修改:
   在编辑框上右击——preferences(首选项)—— General(普通)——Editors(编辑器)——Text Editors(文本编辑器);在Appearance color options (颜色选项)中选择Background color(背景颜色),再点击右侧的color选取颜色即可。——apply(提交)——OK(好)。
注: 中文可能翻译部太正确,自己琢磨下!
==================================================================
我的实践:preferences(首选项)—— General(普通)——Editors(编辑器)——Text Editors(文本编辑器);在Appearance color options (颜色选项)中选择Background color(背景颜色),再点击右侧的color选取颜色即可。
==================================================================

3)折叠功能:
Zend Studio中的代码折叠设置
    用Zend Studio打开PHP代码,默认是代码折叠的,如果需要展开,可以按ctrl+/来打开,注意,这个/是数字小键盘左上角的/。不过,我用的是笔记本电脑,如果要切换到小键盘就比较麻烦。所以如果能在打开文件的时候就自动展开,不自动折叠代码,就好了,具体的方法如下:
    进入window菜单->preferences,在左边找到PHP项,然后找到Editor->Code Folding,里面有Enable folding的选项,去掉就可以了。
    注意,如果左边选的是General,则在Editor的Stuctured Text Editors中也有Enable folding的选项。不过实验证明这个选项不能控制打开时代码的折叠,只对当前编辑的有效。
我的实践: PHP->editor-> code folding 勾选下面的:initially fold these elements:Phpfunction

4)显示空格和换行符号,显示打印页边距,及换行空格符号可见,显示代码的最大字数,查找作用域的颜色等设置,打印长度竖线宽度设定,及换行等:
首先,在Zend Studio中,Windows ->preferences->General->Editors->Text Editors的show print margin中,可以设置在多个个字符处显示一根绿色的竖线,提醒你此处就是你所设置的最大字数.
接着,在Windows ->preferences->PHP->Code Style->Formatter->Edit->Line Wrapping中,可以设置在编写类的定义,方法的定义,调用方法,表达式时自动进行换行.记得勾选上"Force split".
需要注意的是, 在定义字符串的时候,在一行达到最大字数时不会自动分行,需要自己手动分行,这就是第一步设置显示绿线的用处.



在Zend Studio 10的Outline中使用的图形标志:http://old.uplook.cn/index.php?a=index&m=Index&c=show&id=228514&
在Zend Studio 9中,如果打开Outline View,可以看到当前浏览的文件中对各种元素的图形标志.这些标志方式在其它一些View中当然也是可以看到的.这里记录下,主要是PHP源码文件.
1.图形主体
绿色空心圆: public field
黄色空心菱形: protected field
红色空心方块: private field
绿色实心圆: public method
黄色实心菱形: protected method
红色实心方块: private method
2.图形附加符号
右上角:
'S': 具有static修饰符
'C': 这是一个构造方法
'F': 这是一个常量
'A': 具有abstract修改符
右下角:
绿色实心三角形: 此方法对父类方法进行了overriding
PHP版本:
PHP 5.4.4-12 (cli) (built: Feb  1 2013 08:58:27)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
    with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
在多串口用Select读取时,PHP出现:
PHP Strict standards:  Only variables should be passed by reference in /root/dev_Codes_All/phpComSelect/fopenSelectWithRaspberry.php on line 49
PHP Stack trace:
PHP   1. {main}() /root/dev_Codes_All/phpComSelect/fopenSelectWithRaspberry.php:0

实践下面Ok,能去掉提示:
PHP Strict Standards: Non-static method错误的解决方法
在程序添加了error_reporting(E_ERROR | E_WARNING | E_PARSE)后解决问题!

来源:http://www.glblog.net/?post=178
树莓派在运行命令行出出现如下错误:


可以通过以下命令解决,关闭方法:

其实前面在windows7下安Lamp也出现过,当时的记录:http://jackxiang.com/post/5919/
阅读全文
如下可以通过smarty获取支Url地址:

m.xiyou.cntv.cn/contentmanage/videoall?a=b
分别是:
m.xiyou.cntv.cn
/contentmanage/videoall?a=b
对比PHP的:
$_SERVER["REQUEST_URI"]=例子:/lianxi/servervalues.php?a=1&b=2
$_SERVER["HTTP_HOST"]=localhost

来源:http://www.itlearner.com/code/smarty_cn/language.variables.smarty.html
阅读全文
php5.3.13向PHP 5.4.4-12迁移时出现Non-static method should not be called statically的问题,在网上搜索了一下解决方法:
Strict Standards: Non-static method should not be called statically
严格的标准:非静态方法不应该被静态调用
我的解决办法:
1)修改PHP.ini文件里的配置,发现问题依旧。
error_reporting = E_ALL | E_STRICT
修改为
error_reporting = E_ALL & ~E_NOTICE
2)打开Urlrewrite重写的index.php发现这儿:

于是修改为:

于是就不报错了,这只是一个临时解决办法,最好是按PHP5.4的严格编码来写。

以下来自网络:
原因是 程序编码 不符合运行环境
临时解决办法是:

如果有权限修改 PHP.INI
修改文件 php.ini中设置:
error_reporting = E_ALL | E_STRICT
显示那些不符合编码规范的警告(coding standards warnings)。
如果出于调试需要,应改为 error_reporting = E_ALL & ~E_NOTICE

如果你没有修改PHP.INI文件的权限
也可以修改程序代码
在程序最前 加上
error_reporting(E_ERROR | E_WARNING | E_PARSE);



解决方法如下:

1, 打开 xampp/php/php.ini 配置文件, 把 error_reporting = E_ALL | E_STRICT 替换成 error_reporting = E_ALL & ~E_STRICT  ,把 display_errors = On 替换成 display_errors = Off ,然后保存,重启服务器,刷新页面。

2,也可打开joomla 文件夹下的 configuration.php, 把error_reporting = "-1" 替换成 error_reporting = "-6138", 然后保存,这种方法治标不治本。

3,修改joomla文件夹下的 htaccess.txt 文件, 打开文件,找个合适的位置,如最后面,添加如下代码:
# supress php errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

然后 文件-另存为 ,选好保存路径, 文件名为:.htaccess , 文件类型变为:所有文件  d,保存。

来源:http://wordpress.facesoho.com/program/non-static-method-should-not-be-called-statically.html
          http://wuxiong8665.blog.163.com/blog/static/93512201152210481436/
          http://www.laruence.com/2012/06/14/2628.html
单例模式,也叫单态模式
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

还有, singleton能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能synchronize的安全自动加1,如果你要把这个数字永久保存到数据库,你可以在不修改单态接口的情况
下方便的做到。

另外方面,Singleton也能够被无状态化。提供工具性质的功能,

Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。

我们常常看到工厂模式中类装入器(class loader)中也用Singleton模式实现的,因为被装入的类实际也属于资源。

一般Singleton模式通常有几种形式:

public class Singleton {

  private Singleton(){}

  //在自己内部定义自己一个实例,是不是很奇怪?
  //注意这是private 只供内部调用

  private static Singleton instance = new Singleton();

  //这里提供了一个供外部访问本class的静态方法,可以直接访问  
  public static Singleton getInstance() {
    return instance;   
   }
}




第二种形式:

public class Singleton {
  private static Singleton instance = null;

  public static synchronized Singleton getInstance() {

  if (instance==null)
    instance=new Singleton();
  return instance;   }

}




使用Singleton.getInstance()可以访问单态类。

上面第二中形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。

注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。关于lazy initialization的Singleton有很多涉及double-checked locking (DCL)的讨论,有兴趣者进一步研究。

一般认为第一种形式要更加安全些。


使用Singleton注意事项:
有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装入器装载;在EJB这样的分布式系统中使用也要注意这种情况,因为EJB是跨服务器,跨JVM的。

我们以SUN公司的宠物店源码(Pet Store 1.3.1)的ServiceLocator为例稍微分析一下:

在Pet Store中ServiceLocator有两种,一个是EJB目录下;一个是WEB目录下,我们检查这两个ServiceLocator会发现内容差不多,都是提供EJB的查询定位服务,可是为什么要分开呢?仔细研究对这两种ServiceLocator才发现区别:在WEB中的ServiceLocator的采取Singleton模式,ServiceLocator属于资源定位,理所当然应该使用Singleton模式。但是在EJB中,Singleton模式已经失去作用,所以ServiceLocator才分成两种,一种面向WEB服务的,一种是面向EJB服务的。

Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类 线程 内存等概念有相当的了解。

总之:如果你的应用基于容器,那么Singleton模式少用或者不用,可以使用相关替代技术。



来自:http://www.dowhile.net/forum.php?mod=viewthread&tid=497
百度有一篇文章,使用单例模式内存中保存数据可提高数据处理速度,Url:http://wenku.baidu.com/view/c0d6f78cb9d528ea81c779a0.html

PHP的单例模式:
http://blog.sina.com.cn/s/blog_6dbbafe001018w7r.html
http://blog.csdn.net/jungsagacity/article/details/7618587
http://www.cnblogs.com/mo-beifeng/archive/2012/02/21/2362332.html
PHP的单例实现如下:

Run Result:
This is a Constructed method;调用方法成功
( ! ) Fatal error: Clone is not allow! in D:\wamp\www\aaa\danli.php on line 27
问题:
问题讨论:
一:[北京]PHPMAN  14:52:14
有没有一个比sprintf稍微强大点的替换函数?
sprintf('select * from %s where %s=%s',这里是数组);
----------------------------------------------------------------------------------------
1)实现这个功能用到正则,这个函数可能是这样,数组长度不定怎么办?:
学习正则并可以回调的函数preg_replace_callback:



PHP的多个参数args,结合create_function生成一个函数来实现,
再学习这个create_function:


最后,结合上面两个函数成型如下新的函数,该问题得到解决:




中庸就是春江  16:33:04
在preg_replace_callback 中使用匿名函数,不知道怎么把变量$arr带过去,无奈使用$GLOBALS
尽管可以有多方法,但这样写也是对新函数的了解,有说用数组函数,不用正则的:
莫莫<happy.yin@qq.com>  16:34:34
用正则 还不如  implode  array_keys array_value  组合 划算呢
竖琴螺  16:28:08
{math equation=rand(1,100) assign="m"}
阅读全文
1)纯Js实现来自PHP高级群中庸就是春江:


2)用Jquery实现,PHP高级群单曲实现:
先说前端使用 jQuery 时怎么区分:

  jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest

  在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取。(注意:中划线换成了下划线,不区分大小写)

  由此,我们可以这样来判断是否为 ajax 请求:


写成函数:


在使用原生 JavaScript 发出 ajax 请求时,我们也可以给头部添加信息,以方便后端同学进行区分,方法如下:



这里我们也一样是给头部添加 X_REQUESTED_WITH 信息,与 jQuery 的一致。当然你也可以更改为别的信息来进行区分。



  OK,进行区分之后有什么好处呢?说两个例子:

  1.当 js 文件未加载完时,用户点击了某个按钮或链接,本应是 ajax 请求的成了 正常请求,后端根据判断,不输出 ajax 时的 json 数据,而是跳转,这也是优雅降级的形式。

  2. [A 页面]使用 ajax 方式进行登录,[B 页面]使用正常方式登录,如果不区分,后端需要写两次几乎完全相同的代码,而有了区分,可以把重复的代码消掉。

来源:http://copier.blog.163.com/blog/static/220101002012111241827156/
如何防止一个函数执行时间过长呢?在PHP里可以用pcntl时钟信号+异常来实现。
代码如下:

root@192.168.137.158:~/php/swoole_study_codes# php timeout.php
PHP Exception:   in /root/php/swoole_study_codes/timeout.php on line 19
PHP Stack trace:
PHP   1. {main}() /root/php/swoole_study_codes/timeout.php:0
PHP   2. a() /root/php/swoole_study_codes/timeout.php:26
PHP   3. sig() /root/php/swoole_study_codes/timeout.php:5
timeout
Stop
a finishi
Stop

     原理是在函数执行前先设定一个时钟信号,如果函数的执行超过规定时间,信号会被触发,信号处理函数会抛出一个异常,被外层代码捕获。这样就跳出了原来函数的执行,接着执行下面的代码。如果函数在规定的时间内,时钟信号不会触发,在函数结束后清除时钟信号,不会有异常抛出。
来源自rango兄弟的博客:http://swoole.sinaapp.com/archives/64
Session其实是和cookie有联系的,通过session_id()作为浏览器里的cookie发送给浏览器,下次浏览器就像PHP客户端发送这个session_id(Cookie)后,服务器于是就知道这个用户是谁,通过session_id获取到所有的当前用户设置的session数组,因session是隐私,所以,在一个PHP里是没法获取到所有用户的session的,只能获取到当前,要想获取所有的,得记录到文件中(有session的用户访问)才行获取到程序设置的session值,否则,只能从服务器里的session文件中去提取(可能要对文件进行破解)。


阅读全文
在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始,组合XML字符串时遇到了< 。需要转义。
PHP5自带的simplexml_load_file对这个xml解析内容为空是因内容里包含:
<![CDATA[标题3]]>  内容里有 <> 特殊字符,所以,解析不到值。

又是一个鸡肋,为什么要说又呢?呵呵。

XML 的 CDATA,即 <![CDATA[ 与 ]]> 之间可以放 <、>、&、'、" 字符,由于 CDATA 中的内容不会被解析,所以上述字符在 CDATA 中不会造成 XML 的错误,否则“<”会被当作一个标签的开始。

但是,重要了。CDATA 中仍然不能放一些东西:

一是放特殊符号危险,比如“”,可能某些解析器认识,某些解析器不认识,解决办法:XmlTextReader 解析 XML 时遇到特殊字符出错。
二是不能放 <![CDATA[ 和 ]]>。像我们的 IT 类文章中可能经常出现这些字符,出现了,若写在 XML 势必出错,解决办法是用 System.Web.HttpUtility.HtmlEncode 将 <、>、&、'、" 进行编码,取值时再解码。那问题来了,既然已经编码了,还要 CDATA 做什么?


最后,在一个兄弟那儿看到是支持CDATA的PHP也可以解析,如下:
http://hi.baidu.com/yinqinlong502/item/e4dfc900a977ed1acc34eae9
php 解析xml遇到cdata怎么办
用$rss = simplexml_load_file ( '11111.xml', 'SimpleXMLElement', LIBXML_NOCDATA );哎就为了这么个函数我还去写正则准备替换了,白白废了我两小时,shit!!!以后多注意下那些函数的可选参数吧。长点教训.
直接输入xml内容为参数的也支持CDATA的解析,如下:


阅读全文
分页: 16/24 第一页 上页 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 下页 最后页 [ 显示模式: 摘要 | 列表 ]