01 2010 档案
摘要:上面一个系列的教程:用 Socket 和 Pcntl 实现一个多进程服务器(一) PHP多进程编程(一) PHP多进程编程(二)管道通信 PHP多进程编程(三)多进程抓取网页的演示 说的都是只兼容unix 服务器的多进程,下面来讲讲在window 和 unix 都兼容的多进程(这里是泛指,下面的curl实际上是通过IO复用实现的)。 通过扩展实现多线程的典型例子是CURL,CURL 支持多线程的抓取网页的功能。这部分过于抽象,所以,我先给出一个CURL并行抓取多个网页内容的一个分装类。这个类实际上很实用,详细分析这些函数的内部实现将在下一个教程里面描述。 你可能不能很好的理解这个类,而且,ph
阅读全文
摘要:要理解这个部分的代码,请阅读:用 Socket 和 Pcntl 实现一个多进程服务器(一) PHP多进程编程(一) PHP多进程编程(二)管道通信 我们知道,从父进程到子经常的数据传递相对比较容易一些,但是从子进程传递到父进程就比较的困难。有很多办法实现进程交互,在php中比较方便的是 管道通信。当然,还可以通过 socket_pair 进行通信。首先是服务器为了应对每一个请求要做的事情(发送一个url 序列,url序列用\t 分割。而结束标记是 \n)代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http
阅读全文
摘要:1.非法的数据过滤1.1数据检查:通过链接传递的常数你永远要假定它可以是任意的值。一个合格的程序,它首先有一套过滤系统,过滤数据的有效性。一般来说,在js的客户端,会有一个过滤,提示你输入了非法的数据,但是js很容易被绕过,所以,服务器端还要执行相同的检查。一般检查的项目如下:1.是否是布尔类型2.是否是一个字母3.是否是整数4.是否是小数5.是否是个email6.是否是个url7.是否是个正确的...
阅读全文
摘要:一个进程如果是个人英雄主义,那么多进程就是集体主义。(不严格区分多进程 和 多线程的差别)你不再是一个独行侠,而是一个指挥家。独来独往,非常自由自在,但是,很多时候,不如众人拾柴火焰高。这就是我对多进程的理解。多线程编程的主要问题是:通信 和 同步问题。更多PHP 多线程编程的背景知识见:PHP多进程编程(一) 在PHP 中,如果光用pcntl ,实现比较简单的通信问题都是很困难的。下面介绍管道通信:1. 管道可以认为是一个队列,不同的线程都可以往里面写东西,也都可以从里面读东西。写就是在队列末尾添加,读就是在队头删除。2. 管道一般有大小,默认一般是4K,也就是内容超过4K了,你就只能读,不
阅读全文
摘要:错误处理是程序中的一个很重要的部分。合理的错误报告的的设计,可以让我们的调试变的轻松。通过位运算设计错误报告是一种很常见的方法,下面通过PHP 中处理错误报告的方式,阐述错误报告的处理方法。1. 定义错误。一般,每一个位代表一个错误,那么一个unsiged int 可以定义 32 种错误。这里列举PHP4 中的定义方法:编 号常 量报 告0x001E_ERROR致命的运行时错误(它会阻止脚本的执行...
阅读全文
摘要:虽然PHP 中,多进程用的比较的少。但是毕竟可能是会用到了。我最近就遇到这样一个问题,用户提交几百个url以后,要读出这个url 中的标题。当然,你不希望用户等待的太久,10s 钟应该给出个答案。但是,本身,你要获取一个url 的标题,少的要 0.1s ,多的要好几秒。显然,采用单个线程的方式是不行的。 我的第一个设计方案是这样的: 1. 用我前面提供的代码提供一个简单的服务器: http://www.cnblogs.com/niniwzw/archive/2009/09/27/1575002.html 这个服务器的作用是:提供一个url,然后,就读取标题。这里,可以每次读128个字节,看看.
阅读全文
摘要:很想了解一些交易软件的数据存储方式。看到了一篇好文章,Mark 一下。核新同花顺数据结构(一):总览同花顺采用了简易的数据库组织方式。在同花顺的发布文件包中包括了SQLite 3的驱动,但不是很清楚同花顺是如何使用这个驱动的。基本上,对同花顺数据结构的解析不需要这么复杂,同花顺发布文件包中的SQLite文件被核新程序员重新编译过,不过就与SQLite Manager的简单配合使用来看,并不影响对标...
阅读全文
摘要:因为工作需要,经常要写window 和 unix 系统兼容的程序。可是,我在visual studio 2005 上写好Makefile 以后,放到freebsd上,就是编译不了,报下面的错误:make: fatal errors encountered -- cannot continue我写了一个很简单的测试Make :helloworld:main.o mylib.ogcc main.o m...
阅读全文