摘要: 本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步。写得比较简单,作为备忘录。PHP多进程通过pcntl_XXX系列函数使用多进程功能。注意:pcntl_XXX只能运行在php CLI(命令行)环境下,在web服务器环境下,会出现无法预期的结果,请慎用!管道PIPE管道用于承载简称之间的通讯数据。为了方便理解,可以将管道比作文件,进程A将数据写到管道P中,然后进程B从管道P中读取数据。php提供的管道操作API与操作文件的API基本一样,除了创建管道使用posix_mkfifo函数,读写等操作均与文件操作函数相同。当然,你可以直接使用 阅读全文
posted @ 2012-07-06 19:04 bourneli 阅读(22639) 评论(6) 推荐(2) 编辑
摘要: 背景有一个php的CGI,在处理请求时,需要到其它10台左右的服务器上拉取数据(方式一样,只是服务器IP不同),进行展示。如果使用串行执行,由于网络延时,必然导致每一次http响应事件较长,经实践证明,需要7~10秒左右的时间,用户体验很差。所以,如果能够采用并行,应该会大大减少响应时间。在网上查找相关资料,决定采用php提供的pcntl_fork + 管道的方式实现并行数据拉取与同步。经实践证明,改成并行后,只需要不到2秒的时间,就可以完成所有数据的拉取,但是却无法将这些数据返回给浏览器(用了等于白用L)。原因PHP的多进程函数(pcntl_*系列函数)通过apache执行,其结果很诡异,竟 阅读全文
posted @ 2012-07-06 17:50 bourneli 阅读(4113) 评论(1) 推荐(0) 编辑