msgbartop
PHP语言, PHP扩展, Zend引擎相关的研究,技术,新闻分享 – 左手代码 右手诗
msgbarbottom

18 Jun 08 深入理解PHP原理之Opcodes

最近要给Yahoo的同事们做一个关于PHP和Apache处理请求的内部机制的讲座,刚好写了些关于Opcodes的文字,就发上来了,这个文章基于 Sara Golemon的 Understanding OPcode

01 May 08 汉字和Unicode码(utf-8)之间的转换(Pack/Unpack)

保证你要转换的字符串编码为UTF8,如果不是,请iconv cnStr成utf8

$cnStr = "中"; //utf8的中文

//unicode
$code = unpack("H6codes", $cnStr);

//汉字
$cnStr = pack("H6", $code['codes']);

如果需要的是unicode的编码值, 那只要把汉字iconv成unicode再unpack就行了.

恩, pack/unpack很强大,, 和c语言交换数据, 二进制方式的序列化,操作二进制文件.. etc…

21 Apr 08 关于PHP你可能不知道的-PHP的事件驱动化设计

在PHP中有这么一族函数,他们是对UNIX的V IPC函数族的包装。

它们很少被人们用到,但是它们却很强大。巧妙的运用它们,可以让你事倍功半。

它们包括:
信号量(Semaphores)
共享内存(Shared Memory)
进程间通信(Inter-Process Messaging, IPC)

基于这些,我们完全有可能将PHP包装成一基于消息驱动的系统。

17 Apr 08 页面乱码问题根源浅析

这个问题已经遇到过俩次了,就是页面中明确指明了编码是UTF8,但是显示是乱码。

虽然知道解决方法,也知道是Apache的原因,但是一直没有去找其所以然,今天趁机,就研究了一下。

首先, 关闭PHP配置文件php.ini中的default_charset:

1. 页面没有指定charset , Apache配置defaultcharst gbk , 页面文件编码是utf-8…..

16 Apr 08 采用PHP实现”服务器推”技术的聊天室

传统的B/S结构的应用程序,都是采用”客户端拉”结束来实现客户端和服务器端的数据交换。
本文将通过结合Ticks(可以参看我的另外一篇文章:关于PHP你可能不知道的-PHP的事件驱动化设计 ),来实现一个服务器推的PHP聊天室简单构想。

16 Apr 08 编写提供对象给PHP使用的Module

还是那个关于开发安全签名的PHP模块, 今天将它包装成一个PHP的CLASS,也同样,网上的资料少之甚少,于是我想将经验写一篇,关于如何在Extension Module中创建一个可以被PHP访问的对象的文章。 和大家分享。

16 Apr 08 使用fscok实现异步调用PHP

Web 服务器执行一个脚本,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。
而有的时候,我们更本不关心这些耗时的脚本的执行结果,但却还要等他执行完返回,才能继续下一步。
那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行?

接下来,我将使用fscokopen来实现这一功能。

14 Apr 08 PHP实现异步调用方法研究

作者: Laruence( ) 本文地址: http://www.laruence.com/2008/04/14/318.html 转载请注明出处 浏览器和服务器之间是通过 HTTP 协议进行连接通讯的。这是一种基于请求和响应模型的协议。浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端。 这就有了一个问题,Web 服务器执行一段程序,可能几毫秒就完成,也可能几分钟都完不成。如果程序执行缓慢,用户可能没有耐心等下去,就关闭浏览器了。 而有的时候,我们更本不关心这些耗时的脚本的返回结果,但却还要等他执行完返回,才能继续下一步。 那么有没有什么办法,只是简单的触发调用这些耗时的脚本然后就继续下一步,让这些耗时的脚本在服务端慢慢执行? 经过试验,总结出来几种方法,和大家share: 1. 最简单的办法,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,嵌入一个img标签,src指向要执行的耗时脚本。 这种方法最简单,也最快。服务器端不用做任何的调用。 但是缺点是,一般来说Ajax都应该在onLoad以后触发,也就是说,用户点开页面后,就关闭,那就不会触发我们的后台脚本了。 而使用img标签的话,这种方式不能称为严格意义上的异步执行。用户浏览器会长时间等待php脚本的执行完成,也就是用户浏览器的状态栏一直显示还在load。 当然,还可以使用其他的类似原理的方法,比如script标签等等。 2. popen() resource popen ( string command, string mode ); //打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。 所以可以通过调用它,但忽略它的输出。 pclose(popen("/home/xinchen/backend.php &", ‘r’)); 这个方法避免了第一个方法的缺点,并且也很快。但是问题是,这种方法不能通过HTTP协议请求另外的一个WebService,只能执行本地的脚本文件。并且只能单向打开,无法穿大量参数给被调用脚本。 并且如果,访问量很高的时候,会产生大量的进程。如果使用到了外部资源,还要自己考虑竞争。 3. 使用CURL 这个方法,设置CUROPT_TIMEOUT为1(最小为1,郁闷)。也就是说,客户端至少必须等待1秒钟。 $ch = curl_init(); $curl_opt = array(CURLOPT_URL, ‘http://www.example.com/backend.php’, CURLOPT_RETURNTRANSFER, [...]

04 Apr 08 在PHP Module中获取$_GET/$_POST/$_COOKIE的方法研究

  最近在做一个PHP的安全模块,其中要在Module的函数中获取用户的Cookie,从而生成签名;今天找遍Baidu/Google,一点相关资料都 没有,不得已,只好给yahoo PHP dev mail list发了求救信。后来,偶然在Google上看到了一个变量 http_globals ,眼前一亮,虽然没有详细资料,但经过一顿试,N次Segmentation fault以后,终于成功!

03 Apr 08 var_export 与 var_dump的不同

最近又发现了一个使用var_export和var_dump的不同点….

Pages:  1 2 3 ...10 11 12 13 14 15 16 17 18