图片动态缩放PHP与JS算法

作者 : admin 于 2009年07月20日, 08:19:05
2009
07-20

这个算法写好多次了,虽然简单,但每次都得想一次,这里做个备份。

因为GD函数进行缩放,必须有宽和高,而在浏览器中,会自动按照比率调整宽高,所以两个函数稍有区别。

  1. #PHP版
  2. # $s_width  原图宽
  3. # $s_height 原图高
  4. # $t_width  目标文件最大宽
  5. # $t_height 目标文件最大高
  6. function ReSizePic( $s_width , $s_height , $t_width , $t_height)
  7. {
  8. if( $s_width / $s_height > $t_width / $t_height && $s_width > $t_width)
  9. {
  10. $t_height = $s_height * $t_width / $s_width;
  11. $t_width = $t_width;
  12. }
  13. else if( $s_width / $s_height > $t_width / $t_height && $s_width < = $t_width)
  14. {
  15. $t_height = $s_height;
  16. $t_width  = $s_width;
  17. }
  18. else if( $s_width / $s_height < $t_width / $t_height && $s_height > $t_height)
  19. {
  20. $t_width = $s_width*$t_height/$s_height;
  21. $t_height = $t_height;
  22. }
  23. else if( $s_width / $s_height < $t_width / $t_height && $s_height <= $t_height)
  24. {
  25. $t_height = $s_height;
  26. $t_width  = $s_width;
  27. }
  28. return array( "width" => $t_width , "height" => $t_height );
  29. }
  30. #JS版
  31. # obj 图片对象
  32. # maxWidth 显示最大宽
  33. # maxHeight 显示最大高
  34. function ReSizePic( obj , maxWidth , maxHeight )
  35. {
  36. if( ( obj.width/obj.height >= maxWidth/maxHeight ) && obj.width > maxWidth )
  37. {
  38. obj.width = maxWidth;
  39. }
  40. else if( ( obj.width/obj.height < maxWidth/maxHeight ) && obj.height > maxHeight )
  41. {
  42. obj.height = maxHeight;
  43. }
  44. }

在windows下玩apache php不能不知的几个小设置

作者 : admin 于 2009年06月10日, 17:09:26
2009
06-10

1、PHPIniDir “D:\PHP5″

这样不用每次都把php.ini拷贝到C:\Windows下

2、set Path=D:\PHP5;D:\PHP5\ext;%Path%

这样不用每次把那些dll拷贝到C:\Windows\system32下

设计标准的通讯协议

作者 : admin 于 2009年05月17日, 23:48:25
2009
05-17

当然不会是底层通讯协议,因为TCP/IP已经为我们准备好了足够完善的通讯机制确保稳定安全。

此协议为七层应用协议,跟http ftp是平级的,使用socket进行通讯,可以兼容php、python、java、c等语言。

协议开源,使用点对点信息校验,满足普通应用。

协议模拟tcp封包过程,进行数据封装。

协议内容:(伪代码)

  1. struct vhost
  2. {
  3.     Head varchar(10),            //协议头
  4.     Version int(5),                 //版本
  5.     Timestamp int(5),            //时间戳
  6.     Length int(10),                //包长度
  7.     Signature varchar(10),      //签名
  8.     Date varchar(500)            //数据
  9. }

协议包包括了协议头,版本,时间戳,包长度、签名(防止数据篡改和伪造),数据。基本能满足应用。

控制端数据打包发送后,受控端只需返回接受成功即可,以便客户端及时作出判断。

底下针对此包做PHP版本的封包和python的解包部分。

注释:原来使用问答的方式进行通讯,需要多次数据的应答,而此次的修改只需一次即可完成,而打包封包在一端完成,这样对网络稳定性的依赖就会降低。

PHP DeZend真的很爽

作者 : admin 于 2009年05月02日, 00:19:03
2009
05-2

突然在网上发现一套我渴望已久的IDC管理软件,下载下来,除用vb之类的加密外,其源代码是用zend加密过的PHP代码。大喜,网上找到这个工具,然后迅速反接后,看到所有源代码。开始研究。

PHP DeZend

解决了该死的权限问题,是否真的有效

作者 : admin 于 2009年03月12日, 23:43:34
2009
03-12

我的apache+php权限是配置的最为严格的,当然,在用的时候难免伴随着混乱的账户情况,linux的权限机制也是很让人头疼的,终于,还是在风平浪静种碰到了麻烦。

我不认为PHP很强,因为它只是一个面向Web的脚本语言,而PHP的开发者却赋予了它太多,让人去用,有人也滥用。

当然,一门语言能解决N多问题是好的,比如汇编,C,但终究PHP有它跨不过的坎。毕竟它只是web脚本语言。

权限出现很大的问题,至今没有搞透,说白了对linux还是一知半解,使用python写了个第三方的东西,很完美得跳跃了权限的问题。至于效率,python肯定要比php强的,起码PHP作为服务器端程序运行,PHP还没有线程和进程的控制(一直没有发现),python有完善的线程进程的库。在权限管理上,python没细看,PHP在linux下有posix函数库,我一直也没有用过。

在没有更好的解决方案前,我依然用PHP做服务器端程序,python作为一些补充。也许,全部切换过去。

2008
12-25

最近又跟P友讨论PHP的多进程问题,解决的方案,一般都是建立新的系统进程去处理,而linux的nohup命令可以创建新的进程,如果主程序需要处理很多数据,比如一个队列,把这些记录分布开,可以提高主程序的响应,能更快的使主程序结束。

这个方案最早出现在这哥们的博客里,大家可以参考 http://blog.s135.com/read.php/311.htm

而我处理,基本基于PHP的cli模式,使用$argv传递参数而非url,在一些涉及轮询的程序中,可以尽快得把负载分散,使单一的轮询程序来处理下一次的轮询。

sunboyu-amp-fastcgi-suexec-v21-alpha 发布

作者 : admin 于 2008年12月15日, 21:58:14
2008
12-15

Linux下APACHE MYSQL PHP FCgid Suexec 自动安装脚本V2.1
1、增加了PHP –enable-bcmath 参数,支持高精度函数库
2、增加了ncurses MYSQL的一个依赖库
3、增加了apache –enable-so 参数

sunboyu-amp-fastcgi-suexec-v21-alpha

此脚本在Centos4.7ServerCD 最小安装,root账户下执行完全正常。

PHP引用机制和垃圾回收机制详解

作者 : admin 于 2008年12月12日, 22:16:09
2008
12-12

PHP对变量的跟踪,其实是采用引用,比如 $a = “test” 那么就是在内存中开辟一个存储区,保存 test,$a 做为test的引用。

同时我们可以 $b = &$a,$b作为 $a的引用,他们同时指向test存储空间。

在文章 http://www.sunboyu.cn/2008/11/19/php%E4%B8%AD%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8%E8%AF%A6%E8%A7%A3.shtml 中,我们做了一个应用的测试,当删除一个引用后,变量并不消失,是因为PHP使用一个引用计数的东东。当$a=”test”建立后,test的引用计数就是1,建立 $b=&$a后,test的引用计数就是2,删除任何一个引用后,引用计数为1.

只要是引用计数不为0的数据,则为当前有效的数据。然而,当数据的引用计数为0的时候,系统就会识别此数据为垃圾数据,需要回收,这也就形成了PHP的垃圾回收机制。

解决php模块ssh2的编译问题

作者 : admin 于 2008年12月07日, 21:50:06
2008
12-7

这个问题一google就出来了,官方给出的解决方案,
在config.h里加上一个宏定义 #define LIBSSH2_APINO 200412301450,哇塞,一切OK
http://pecl.php.net/bugs/bug.php?id=9656

  1. /root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_methods_negotiated':
  2. /root/ssh2-0.10/ssh2.c:483: warning: assignment discards qualifiers from pointer target type
  3. /root/ssh2-0.10/ssh2.c:484: warning: assignment discards qualifiers from pointer target type
  4. /root/ssh2-0.10/ssh2.c:485: warning: assignment discards qualifiers from pointer target type
  5. /root/ssh2-0.10/ssh2.c:486: warning: assignment discards qualifiers from pointer target type
  6. /root/ssh2-0.10/ssh2.c:487: warning: assignment discards qualifiers from pointer target type
  7. /root/ssh2-0.10/ssh2.c:488: warning: assignment discards qualifiers from pointer target type
  8. /root/ssh2-0.10/ssh2.c:489: warning: assignment discards qualifiers from pointer target type
  9. /root/ssh2-0.10/ssh2.c:490: warning: assignment discards qualifiers from pointer target type
  10. /root/ssh2-0.10/ssh2.c:491: warning: assignment discards qualifiers from pointer target type
  11. /root/ssh2-0.10/ssh2.c:492: warning: assignment discards qualifiers from pointer target type
  12. /root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_fingerprint':
  13. /root/ssh2-0.10/ssh2.c:536: warning: assignment discards qualifiers from pointer target type
  14. /root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_publickey_add':
  15. /root/ssh2-0.10/ssh2.c:1038: warning: passing argument 1 of '_efree' discards qualifiers from pointer target type
  16. /root/ssh2-0.10/ssh2.c: In function 'zif_ssh2_publickey_list':
  17. /root/ssh2-0.10/ssh2.c:1097: warning: passing argument 4 of 'add_assoc_stringl_ex' discards qualifiers from pointer target type
  18. /root/ssh2-0.10/ssh2.c:1098: warning: passing argument 4 of 'add_assoc_stringl_ex' discards qualifiers from pointer target type
  19. /root/ssh2-0.10/ssh2.c:1106: warning: initialization discards qualifiers from pointer target type
  20. /root/ssh2-0.10/ssh2.c:1107: warning: passing argument 2 of '_zend_hash_add_or_update' discards qualifiers from pointer target type
  21. /bin/sh /root/ssh2-0.10/libtool --mode=compile gcc  -I. -I

山穷水复疑无路,柳暗花明又一村

作者 : admin 于 2008年12月07日, 00:13:48
2008
12-7

学习就是这样,突然发现了PHP居然有ssh2的模块,这样远程连接linux服务器就很容易,我正头疼用socket写个ssh2的连接类,突然就发现了这个玩意。手册看得还是少,罚吃巧克力一块。
官方文档:http://www.php.net/manual/en/book.ssh2.php

 Page 1 of 4  1  2  3  4 »