Posts Tagged ‘PHP’

PHP也可以开发IM

October 18th, 2008

偶然发现JeCat-Jabber,用PHP开发的IM,开源的,赞!
目前版本还只是0.1.1,14号刚发布的,严重关注!
刚试了一下,目前支持的功能也很有限,当然,最主要的聊天功能是实现了,这就很好了,其他扩展可以慢慢来
咱也可以研究研究,哈哈,虽然不可与QQ,MSN,GTALK等同日而语,不过看到能用PHP开发IM真的很开心
谁说PHP只能做WEB的哈哈哈哈

上地址:http://jj.jecat.cn/

上介绍:

JeCat-Jabber PHP开源即时通讯软件V0.1.1


下载
http://down.chinaz.com/soft/24024.htm

JeCat-Jabber(简称:JJ)  是一款完全由 PHP 开发的即时通讯软件。JJ 采用 Gtk2 图像界面库来实现用户界面。顾名思义 JJ 使用 Jabber 协议(XMPP) ,因此可以 和 包括  GTalk 在内的 其它任何 XMPP 即时通讯软件 聊天。

JJ 项目的初衷在于 演示 桌面窗口 和 PHP 多任务处理,这两大 在长期在 PHP程序员 眼中 几乎是“不可能”的任务。 同时 也是 PHP框架 JCAT 的演示项目,JCAT 是一款同时 支持 Web 和 桌面 的 PHP框架,按照计划 将在稍后 发布。

JJ 的特点

> 跨平台。JJ 在Linxu 环境下 开发,在 Windows 平台上也一样可以正常使用。
> 实用 标准的 XMPP协议,能够与其它的 Jabber 软件互相通讯,例如 Google GTalk、Pidgin、PSI、Spark、Pandion,以及其它的 Jabber网页聊天窗口
> 可更换界面皮肤,皮肤样式文件 采用 类似 CSS 的语法,便于美工独立工作。
> 纯 PHP 实现,从 通讯协议 到 图形界面,全部都由 PHP 开发,如果你正好是一名 PHP 程序员,你可以驾轻就熟地在 JJ 之上进行二次开发。
> 可整合到你的网站中。JJ 近期的完善 会使 JJ 更容易地 为你的网站所有,让你的网站 也可以有像 淘宝旺旺 那样的 专用聊天工具

[ PHP 图像界面 ]
JJ 采用 Gtk图像界面库,Gtk库 中 提供了丰富的 图形界面窗体(Widget),以及灵活方便的 窗体布局方式。 Gtk 本身 被广泛应用在 Linux 平台上,Linux 最著名 的桌面环境之一 Gnome 即是众多 Gtk软件 的集中展示。 PHP-Gtk2 将 Gtk 窗体绑定到 PHP 语言中,允许程序员 通过 PHP语言 来创建、显示、销毁 Gtk 窗体。PHP-Gtk 项目由 PHP创始人 亲自负责,并且自项目创立一来 一直持续发展,目前已经支持 最新的 Gtk2。

[ PHP 多任务处理 ]
PHP 直到 5.2都没有提供 稳定可靠的 多线程特性。 但 PHP 仍然有能力进行多任务处理。
多线程 因为涉及到 线程安全、线程同步 等 困难,在 支持线程的语言中,也常常建议尽量避免使用。
Linux 的多路复用 是 更稳定和安全的 多任务模式,从 PHP5.0 开始 多路复用 支持 Windows 平台。

  • Share/Save/Bookmark

Dips4:关于整型integer遇到的进制和溢出的问题

October 12th, 2008
$v = 04555720201;
echo $v;

恩。。。。输出结果是632791169

起初以为是溢出的,最后发现是因为以0开头的整型会被认为八进制。

查了点资料做备份。
1.Syntax:
Integers can be specified in decimal (base 10), hexadecimal (base 16), or octal (base 8) notation, optionally preceded by a sign (- or +).

To use octal notation, precede the number with a 0 (zero). To use hexadecimal notation precede the number with 0x.

decimal : [1-9][0-9]*
| 0

hexadecimal : 0[xX][0-9a-fA-F]+

octal : 0[0-7]+

integer : [+-]?decimal
| [+-]?hexadecimal
| [+-]?octal

2.溢出overflow

If PHP encounters a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the integer type will return a float instead.

32位系统是2^32-1(?)

注:Mysql里的有符号整型是-2147483648 到2147483647(与PHP相同),无符号的是0 到4294967295

2010.01.08更新3. cookie不能设置为100年哇,虽然想做永久不过期,但是不必须设100年哇,100年会导致PHP溢出的。。。。

  • Share/Save/Bookmark

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 775920 bytes)

September 17th, 2008

解决办法(三种):
一、修改php.ini(推荐)
memory_limit = 12M
二、在程序里面添加如下语句
ini_set('memory_limit', '12M');
三、在根目录建立
.htaccess文件,添加如下内容
php_value memory_limit 12M
如果还不能解决,就把它改得再大一些。
最后注意的是重启服务器。

  • Share/Save/Bookmark

array_map()+create_function()

August 28th, 2008

在查询数据时习惯用SELECT *把所有数据都取出来扔到一个二维数组里
这样一来如果要取数据中具体某个值组成的数组的话一般是foreach出来扔到一个新数组里

例如数组$userarr = array(
array(’uid’=>1,’username’='dreamwing’),
array(’uid’=>2,’username’='cherry’)
);

要取得uid的集合的话,一般是foreach出来扔到一个新数组里。

写多了就回想有没其他方法来实现,数组的函数还是很多的
其中array_map()函数可以用回调函数处理数组的单元
(Read More)

  • Share/Save/Bookmark

Dips1:JS中获得PHP json_encode后的数据处理

August 22nd, 2008

一个通过AJAX来实现二级联动的东西,PHP获取数组以json的形式返回给JS
这里有个小地方需要注意,PHP中json_encode函数return的结果是string的形式
所以传到JS后还需要通过eval()函数来以JS代码形式执行这段string

PS:与JS交互还是JSON比XML方便吖XD

function setbaby(classid,babyid){
	var class_id = document.getElementById(classid).value;
	var x = new Ajax('statusid', 'HTML');
	x.get('batch.common.php?action=getbaby&classid='+class_id, function(s){
		var babyOptions = new Array();
		var babyOptions = eval(s);
		var babyObject = document.getElementById(babyid);
		babyObject.options.length = 0;
		babyObject.options[0] = new Option("选择宝宝","");
		var j=0;
		for(var i=0;i
  • Share/Save/Bookmark