php tokyo_tyrant扩展安装

tokyo_tyrant 还是beta 版,freebsd 的 ports 还没有,有点不爽,用 pecl 安装吧, pecl install tokyo_tyrant pecl: Command not found. 先安装 pear 呵呵 cd /usr/ports/devel/pear make install clean pecl install tokyo_tyrant Failed to download pecl/tokyo_tyrant within preferred state "stable", latest release is version 0.1.2, stability "beta", use "channel://pecl.php.net/tokyo_tyrant-0.1.2" to install install failed 还是不行,要加入beta 才行哦 pecl install tokyo_tyrant-beta ee /usr/local/etc/php/extensions.ini 加入 extension=tokyo_tyrant.so OK 安装完成 重起php进程,用phpinfo 查看一下 freebsd 真是太强大了,喜欢哦!

2009-12-12 · 1 分钟 · admin

用pngencoder php(AMFPHP) 保存图片

转自:http://hi.baidu.com/harry1299/blog/item/d7a64e323ec976f01b4cff3a.html 1.Flash端,通过adobe的类包,将BitmapData数据Encoder成ByteArray .然后,通过http或者amfphp发送到服务器端。 Code: var bd:BitmapData = new BitmapData(canvas.width,canvas.height); bd.draw(canvas); var jpgEncoder : PNGEncoder = new PNGEncoder(); var jpgBytes:ByteArray = PNGEncoder.encode(bd); 2.服务端的工作(针对amfphp而言):接受ByteArray ,注意,php是直接支持ByteArray类型的,然后通过fwrite或者file_put_contents,写数据,并且输出文件,ok搞定 Code: public function createSavePngFile($ba,$savePoint) { date_default_timezone_set('Asia/Shanghai'); $now = date("YmdHis"); $path = "resource/shareVideo/"; $fileName = $path.$now.".png"; $data = $ba->data; if(!file_exists($path.$now.".png")) { $input = file_put_contents( $fileName, $data);//写入二进制数据 if($input != 0 && $input != -1) { return $this->serverPoxy->updateShareInfo($savePoint,$fileName); } else { return false; } } return false; } 注意:file_put_contents( $fileName, $data);中第二个参数是:$ba->data,而不是$ba,这是php的数据结构的规范。我就是搞错了这个,浪费了大侠我整个一个上午的时间,可恶^_^....

2009-12-10 · 1 分钟 · admin

进程信号

转载:http://blog.csdn.net/ljx0305/archive/2008/09/09/2904056.aspx SIGHUP 终止进程 终端线路挂断 SIGINT 终止进程 中断进程 SIGQUIT 建立CORE文件终止进程,并且生成core文件 SIGILL 建立CORE文件 非法指令 SIGTRAP 建立CORE文件 跟踪自陷 SIGBUS 建立CORE文件 总线错误 SIGSEGV 建立CORE文件 段非法错误 SIGFPE 建立CORE文件 浮点异常 SIGIOT 建立CORE文件 执行I/O自陷 SIGKILL 终止进程 杀死进程 SIGPIPE 终止进程 向一个没有读进程的管道写数据 SIGALARM 终止进程 计时器到时 SIGTERM 终止进程 软件终止信号 SIGSTOP 停止进程 非终端来的停止信号 SIGTSTP 停止进程 终端来的停止信号 SIGCONT 忽略信号 继续执行一个停止的进程 SIGURG 忽略信号 I/O紧急信号 SIGIO 忽略信号 描述符上可以进行I/O SIGCHLD 忽略信号 当子进程停止或退出时通知父进程 SIGTTOU 停止进程 后台进程写终端 SIGTTIN 停止进程 后台进程读终端 SIGXGPU 终止进程 CPU时限超时 SIGXFSZ 终止进程 文件长度过长 SIGWINCH 忽略信号 窗口大小发生变化 SIGPROF 终止进程 统计分布图用计时器到时 SIGUSR1 终止进程 用户定义信号1 SIGUSR2 终止进程 用户定义信号2 SIGVTALRM 终止进程 虚拟计时器到时...

2009-11-30 · 1 分钟 · admin

windows下开发并编译PHP扩展(步骤说明)

开发PHP扩展对于普通程序员来讲可能一直是一件很神秘的工作,其实,只要你对C语言熟悉,了解了开发PHP扩展的步骤和规则,开发PHP扩展也是一件很普通的工作。 现在就简单说一在WINDOWS下开发PHP扩展的步骤: 首先需要准备的软件有: cygwin 安装路径e:\app\cygwin visual studio C++ 6.0, 修改环境变量,把已经安装好的PHP路径设置为环境变量。在这里,假设我的PHP安装目录是:e:\app\php5.2.5,那么我把WINDOWS环境变量后面加上这个安装目录。方便一会儿使用php.exe。 PHP源代码,这里假设为e:\c_source_code\php-5.2.5 1、修改文件 “PHP源文件目录/ext/ext_skel_win32.php”,在这里就是:E:\c_source_code\php-5.2.5\ext,其中主要是修改其中的cygwin路径。$cygwin_path = ’e:\app\cygwin\bin’; 把$cygwin_path修改为你实际安装cygwin的路径。 2、在源代码ext目录也就是e:\c_source_code\php-5.2.5\ext下,执行 php ext_skel_win32.php –extname=,此时会在ext目录下生成目录,这个目录就是我们将要进行PHP扩展开发的框架。比如你运行php.exe ext_skel_win32.php –extname=foo,会在ext目录下生成foo目录。 3、将php-root\dev\php5ts.lib拷贝至 “ext/”中。比如你要开发的PHP扩展名为foo,那么就需要把php-root\dev\php5ts.lib拷贝到PHP源文件目录\ext\foo中。 4、修改foo.c内容,编写我们需要的C代码。 5、进入目录,打开.dsp。 设置VC6工程, 设置菜单“组建”->“移除工程配置”,选中“Win 32 Release_TS”, 设置菜单“工程”,选中“Win 32 Release_TS” 打开Tab“连接”,设置“输出文件名”中的目录, [可选]打开Tab“C/C++”,增加“预处理器定义”“,COMPILE_DL_”(注意全大写,默认加入的),取消预定义“LIBZEND_EXPORTS”(否则不可引入zend函数)。 6、设置好以后,进行编译,会生成一个dll文件,文件名是.dll,比如在我们的例子中就为foo.dll 把foo.dll拷到e:\app\ext目录下,并在php.ini里加上一行extension=foo.dll,重启一下apache,查看phpinfo();,会发现我们的PHP扩展foo()已经加载进来,已经可以使用这个foo扩展了。 http://info.codepub.com/2008/08/info-21426.html

2009-11-02 · 1 分钟 · admin

(转)整理了一份比较全面的PHP开发编码规范

这些年来多从事Linux下PHP和C相关的开发,带过很多项目和团队,下面是根据经验整理的PHP编码规范,可以用作给大家的范例和参考,根据需要进行取舍和修改! (可能最新的一些php5的规范不够完整,今后有机会保持更新!) 目录 1 编写目的 2 整体要求 3 安全规范 3.1 包含文件 3.1.1 命名规则 3.1.2 存放规则 3.2 安全规则 3.3 一些针对PHP的规则 3.4 其它处理规则 3.4.1 对输入参数值进行转义处理 3.4.2 操作大HTML文本 4 编码规范 4.1 命名规范 4.1.1 变量命名 4.1.2 类 4.1.3 方法或函数 4.1.4 缩写词 4.1.5 数据库表名 4.1.6 数据库字段 4.2 书写规则 4.2.1 代码缩进 4.2.2 大括号{ }书写规则 4.2.3 小括号( )和函数、关键词等 4.2.4 =符号书写 4.2.5 if else swith for while等书写 4.2.6 类的构造函数 4.2.7 语句断行, 每行控制在80个字符以内 4.2.8 不要不可思议的数字 4.2.9 true/false和0/1判断 4.2.10 避免嵌入式赋值 4....

2009-11-01 · 4 分钟 · admin

BOM--字节序标记

读代码的时候看到这样一段 $template_content = str_replace("\xEF\xBB\xBF", ‘’, $template_content); 不知道是何作用,经过一番查找资料,终于解开了这个疑问 资料如下: 在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“\xFF\xFE”和三个字节“\xEF\xBB\xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。(其他的文本编辑工具也存在这个问题,但是可以选择去除bom,如editplus的设置:参数选择->文件->utf-8, 选择总是删除签名) 如果前面三个字符“\xef\xbb\xbf”则保存格式是utf-8 如果前两个字符是“\xff\xfe”则保存格式是Unicode Unicode规范中有一个BOM的概念。 BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。 UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。Windows就是使用BOM来标记文本文件的编码方式的。 容易导致header session_star ob_start的问题,utf-8编码的文件中,BOM占3个字节,由于php设计时没有考虑BOM的问题,这三个字节会直接输出,如果这时在程序里调用了session函数,就会出问题了 附:文件应该使用 Unicode (UTF-8) 编码保存。同时不要使用 字节序标记(BOM) 。与 UTF-16 和 UTF-32 不同,UTF-8 编码的文件不需要指明字节序,而且 字节序标记(BOM) 在PHP中会产生预期之外的输出,阻止了应用程序设置它自己的 头信息。应该使用Unix 格式的行结束符(LF)。

2009-09-23 · 1 分钟 · admin

spawn-fcgi: no fastcgi application given

刚装完spawn-fcgi 起动会遇到这个错误. 修改 spawn-fcgi 起动脚本 spawn_fcgi_app 加个 php-cgi 地址,或在rc.conf 加上也一样

2009-08-16 · 1 分钟 · admin

开始学习python

原来一直想学这个,但是没有机会,在新项目中的聊天室,打算用python+flex+socket 来实现,效率还不知道,正好顺便学学 python ,看它的语法,感觉还是很简洁的,不过习惯php 了,老是想以 php 的写法来写,这个比较郁闷了!

2009-08-16 · 1 分钟 · admin

md5crypt

php 版 md5crypt postfix extmail 使用 function md5crypt ($pw) { $MAGIC = "$1$"; $rand = substr (md5 (mt_rand ()), 0, 8); return crypt($pw, '$1$'.$rand.'$'); }

2009-07-06 · 1 分钟 · admin

spawn-fcgi 独立出来了,不错

原来一直用php-fpm ,但是更新好像不太及时,上次改了半天ports 才通过编译 /usr/ports/www/spawn-fcgi 以后可以用这个了,但重要载入php.ini 要重起

2009-06-19 · 1 分钟 · admin

SWFUpload V2

Flash Player 10的安全机制更严格,类似打开文件上传的对话框的操作,一定需要用户交互才触发,如果用脚本触发,会报#2176的运行时错误。 void selectFile() 不赞成使用,不兼容Flash Player 10 弹出flash的文件选择对话框,只能选择单个文件。 void selectFiles() 不赞成使用,不兼容Flash Player 10 弹出flash的文件选择对话框,可一次性选择多个文件。 flash_width 固定值:1px (v2.1.0已删除) 设置插入flash影片的HTML元素容器的宽度。如果此设置小于1像素,一些浏览器会出现功能异常。 因此该值在v2.1.0中删除了自定义设置,默认设置为1像素了。 flash_height 固定值:1px (v2.1.0已删除) 设置插入flash影片的HTML元素容器的高度。如果此设置小于1像素,一些浏览器会出现功能异常。 因此该值在v2.1.0中删除了自定义设置,默认设置为1像素了。 flash_color 默认值:#FFFFFF (v2.2.0已删除) 设置HTML页面中的flash背景色,默认为#FFFFFF prevent_swf_caching 默认值:true (v2.2.0新增)该布尔值设置是否在Flash URL后添加一个随机值,用来防止浏览器缓存了该SWF影片。这是为了解决一些基于IE-engine的浏览器上的出现一个BUG。 提醒:SWFUpload是直接在flash_url后添加了一个swfuploadrnd的随机参数。如果你给定的flash_url中已经存在了GET类型的参数,那么就会出现两个问号连接符导致错误。 button_placeholder_id 默认值:null (v2.2.0新增) 该必要参数指定了swfupload.swf将要替换的页面内的DOM元素的ID值。当对应的DOM元素被替换为SWF元素时,SWF的容器会被添加一个名称为"swfupload"的样式选择器供CSS自定义使用。 button_image_url 默认值:空字符串 (v2.2.0新增) V2.2.0版最大的改变就是引入了一个按钮到SWF中,利用该参数可以设置一个相对于该swf文件或者是绝对地址的图片(或者是SWF),作为按钮的UI展现。所有FLASH支持的图片类型都可以使用(gif,jpg,png,或者是一个SWF)。 该按钮图片需要经过一定规则(CSS Sprite)的处理。按钮图片中需要包括按钮的4个状态,从上到下依次是normal, hover, down/click, disabled.(可以参照官方demo中的图片) button_width 默认值:1 (v2.2.0新增) 设置该SWF的宽度属性。 button_height 默认值:1 (v2.2.0新增)设置该SWF的高度属性(按钮图片高度的1/4) button_text 默认值:空字符串 (v2.2.0新增) 该属性设置Flash Button中显示的文字,支持HTML。HTML文本的样式可以通过CSS选择器并配合button_text_style参数来设置。关于Flash文本对HTML的支持详细可见 Adobe’s Flash documentation。 button_text_style 默认值:“color: #000000; font-size: 16pt;” (v2.2.0新增)此参数配合button_text参数,可以通过CSS样式来设置Flash Button中的文字样式。关于Flash文本对CSS的支持详细可见Adobe’s Flash documentation...

2009-05-20 · 1 分钟 · admin

smarty 颜色选择框扩展

* Name: color_options * Input: * - name (optional) - string default "color" * - selected (optional) - string default not set * @author andsky * @param array * @param Smarty * @return string */ function smarty_function_color_options($params, &$smarty) { $name = empty( $params['name'] ) ? 'color' : $params['name']; $colors=array( "skyblue", "royalblue", "blue", "darkblue", "orange", "orangered", "crimson", "red", "firebrick", "darkred", "green", "limegreen", "seagreen", "teal", "deeppink", "tomato", "coral", "purple", "indigo", "burlywood", "sandybrown", "sienna", "chocolate", "silver" ); $_html_result = ''....

2009-05-07 · 1 分钟 · admin

如何加密PHP文件

由于安全原因,有些时候需要把PHP文件加密。zend是收费的软件,而且价格不菲,让人望尘莫及。这里介绍另一种加密方法:php-screw。 php-screw是一款开源,免费,自由使用的软件,它不仅使用方便,而且可以自定义加密字符串,字符串的长度不受限制。下面这些操作是在Debian环境下实现的。 1、下载软件包。到http://sourceforge.net/projects/php-screw/下载php-screw。下载得到的是tar包。 2、安装必须的软件环境:apt-get install php5-dev php5 3、把在第一步中得到的软件包解压:tar -zxvf php_screw-1.3.tgz 4、进入解压缩后得到的目录:cd php_screw-1.3,然后执行命令:phpize生成一些配置安装文件。 5、检查编译环境: ./configure #检查编译环境 自定义加密字符串,你据自己的意愿,修改文件my_screw.h内容,这里面主要记录的是加密字符串。 make #编译 6、把文件modules/php_screw.so拷贝到/usr/lib/php5/2006*/目录下。 7、修改文件/etc/php5/apache2/php.ini,在需要位置添加如下内容: extension=php_screw.so 8、在WEB服务器的根目录里创建文件phpinfo.php,文件的内容如下: 9、在浏览器里输入http:///phpinfo.php,看看php_screw是否生效。 10、进入tools目录,执行命令: make 生成文件screw。 11、进入需要加密的PHP文件所在的文件夹,执行命令 /full/path/of/screw .php 这时的文件便被加密了,原来的文件被重新命名为:.php.screw。 12、screw这个命令只支持单个文件的加密,不支持/full/path/of/screw .php这种命令格式。如果需要把整个目录下的文件加密需要用如下命令: find . -name ‘.php’ -exec /full/of/path/of/screw {} ; 以上写的这些是在Debian环境下实现的,如果在window平台下,只要加载了php_screw这个模块,加密的文件也可以正常显示,但不能在windows平台下进行加密。 好了,用php_screw加密php文件介绍完了。如果您对这个工具感兴趣,不防试一试。 转自 http://afericazebra.blog.163.com/blog/static/300504082008101902427449/ 不错,freebsd 的port 也有,在 /usr/ports/www/php-screw ,正好用一下

2009-05-06 · 1 分钟 · admin

php5.2.9 不能加载 eAccelerator 问题

装上php 5.2.9发现不能加载 eAccelerator ,php也没有报错,不知道是什么问题, 看了一篇文章 在 /usr/local/etc/php/extensions.ini 加上 extension=eaccelerator.so才可以解决, [eaccelerator] zend_extension = "/usr/local/lib/php/20060613-zts/eaccelerator.so" eaccelerator.shm_size = "128" eaccelerator.cache_dir = "/tmp/eaccelerator" eaccelerator.enable = "1" eaccelerator.optimizer = "1" eaccelerator.check_mtime = "1" eaccelerator.debug = "0" eaccelerator.log_file = "/var/log/httpd/eaccelerator.log" eaccelerator.filter = "" eaccelerator.shm_max = "0" eaccelerator.shm_ttl = "0" eaccelerator.shm_prune_period = "0" eaccelerator.shm_only = "0" eaccelerator.compress = "1" eaccelerator.compress_level = "9" eaccelerator.keys = "shm" eaccelerator.sessions = "shm" eaccelerator.content = "shm" 原文 http://gary1974tw.pixnet.net/blog/post/26613606 可惜被x了

2009-04-11 · 1 分钟 · admin

利用Curl、socket、file_get_contents POST数据

array( ‘method’=>‘POST’, ‘header’=>‘Content-type: application/x-www-form-urlencoded’."\r\n". ‘User-Agent : Jimmy's POST Example beta’."\r\n". ‘Content-length: ‘.strlen($post_string)+8, ‘content’=>‘mypost=’.$post_string) ); $stream_context = stream_context_create($context); $data = file_get_contents($remote_server,FALSE,$stream_context); return $data; } ?> 转自 http://hi.baidu.com/xsite/blog/item/1ae57963be3e38680d33fa6b.html

2009-04-06 · 1 分钟 · admin