真正的PHP多线程(绝非fork或者用http再开进程)
转载:http://blog.csdn.net/leinchu/article/details/8012640
我写了一个扩展打算放到pecl,但是,进过交流发现有人已经做了两个php的多线程扩展
1、https://github.com/alecgorge/php_threading/
2、https://github.com/krakjoe/pthreads
刚才成功的编译后了第二个(一个似乎不是官方的标准扩展写法、估计有点儿麻烦,而且第一个是2年前的东西了),迫不及待的写下这篇文章,介绍怎么安装:
#如果你的autoconfig版本高于2.,则只能安装php5.
#否则你只可以安装5.3.17。如果知道你的autoconf的版本——如果你已经安装了php..4那么,你就安装照5.4的安装;如果装了5.3就装5. #5.4
wget http://www.php.net/get/php-5.4.7.tar.gz/from/cn.php.net/mirror
tar zxvf php-5.4..tar.gz
cd php-5.4./ext #5.3
wget http://www.php.net/get/php-5.3.17.tar.gz/from/cn.php.net/mirror
tar -xf php-5.3..tar.gz
cd php-5.3./ext #下面装pthreads
wget https://github.com/krakjoe/pthreads/tarball/master -O pthreads.tar.gz
tar -xf pthreads.tar.gz
mv krakjoe-pthreads* pthreads
cd ../
./buildconf --force
./configure --enable-maintainer-zts --enable-pthreads --prefix=/usr/local/php-threads#其它参数自行配置,这里只是必须的参数
make
make install
源码包里面有例子,像这样执行:
/usr/local/php-threads/bin/php AdvancedSynchronization.php
Process: running
ScopeTest: running
ScopeTest2: running
ScopeTest2: working ...
ScopeTest2: notified:
Process: notifying :
ScopeTest: notified:
Process: notifying :
通过apache执行的还没有试过,因为我不想破坏现有的php环境,而且我也不打算在非cli模式下执行。
真正的PHP多线程(绝非fork或者用http再开进程)的更多相关文章
- Python 多线程、多进程 (三)之 线程进程对比、多进程
Python 多线程.多进程 (一)之 源码执行流程.GIL Python 多线程.多进程 (二)之 多线程.同步.通信 Python 多线程.多进程 (三)之 线程进程对比.多线程 一.多线程与多进 ...
- fork出的子进程和父进程的继承关系【转载】
[原文地址]http://blog.163.com/dengjingniurou@126/blog/static/53989196200962924412524/ fork出的子进程和父进程的继承关系 ...
- fork同一时候创建多个子进程的方法
Fork同一时候创建多个子进程方法 第一种方法:验证通过 特点:同一时候创建多个子进程.每一个子进程能够运行不同的任务,程序 可读性较好,便于分析,易扩展为多个子进程 int main(void) { ...
- 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。
概念: 并行:同时运行 并发:看似同时运行 json后任然中文的问题 import json d = {"名字":"初恋这件小事"} new_d1 = jso ...
- localtime死锁——多线程下fork子进程
近期測试我们自己改进的redis,发如今做rdb时,子进程会一直hang住.gdb attach上.堆栈例如以下: (gdb) bt #0 0x0000003f6d4f805e in __lll_lo ...
- 多线程中fork与mutex
在多线程程序中fork出一个新进程,发现新的进程无法正常工作.因为:在使用fork时会将原来进程中的所有内存数据复制一份保存在子进程中.但是在拷贝的时候,但是线程是无法被拷贝的.如果在原来线程中加了锁 ...
- 【转】Linux杀死fork产生的子进程的僵尸进程defunct
僵尸进程 就是 已经结束,但是还没有清理出去的.用kill -9 $PID 也无法杀死. 所以程序中应该避免出现僵尸进程. 用fork之后,父进程如果没有wait /waitpid 等待子进程的话,子 ...
- Linux下利用fork()创建子进程并使父进程等待子进程结束
int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp ...
- Java 多线程详解(二)------如何创建进程和线程
Java 多线程详解(一)------概念的引入:http://www.cnblogs.com/ysocean/p/6882988.html 在上一篇博客中,我们已经介绍了并发和并行的区别,以及进程和 ...
随机推荐
- 深入浅出JDBC-快速入门
一.目录 二.概述 简述 JDBC是什么?JDBC英文名为:Java Data Base Connectivity(Java数据库连接),官方解释它是Java编程语言和广泛的数据库之间独立于数据库的连 ...
- Html基础知识详解
一定要做的符合客户要求,不是自己认为对的. 一.基础标签 1.1 大小颜色位置 <!DOCTYPE HTML> <html> <head> <meta htt ...
- 老生常谈javascript的5中继承
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- VS2010程序打包操作(超详细的)转
1. 在vs2010 选择“新建项目”----“其他项目类型”----“Visual Studio Installerà“安装项目”: 命名为:Setup1 . 这是在VS2010中将有三个文件夹, ...
- VB.net X86设置
在Visual Studio中,在任何项目中点击右键,选择项目属性->编译->高级编译选项
- cocos2d-x hello world及安卓平台迁移
本节和大家一起新建一个项目工程,并通过cygwin迁移至android平台. 以下是本节主要内容: 利用cocos2d-x自带脚本,生成测试工程,并测试运行: 将该测试项目通过cyg ...
- [android] Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化
生命周期Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情.例举了 7 个常用的钩子:protected void onCreate(Bundle ...
- 关于JDBC PreparedStatement
PreparedStatement的执行步骤: 1. 向数据库服务器发送SQL语句,数据库对SQL进行解析和优化(conn.preparedStatement(sql)) 2. 向数据库发送绑定的参数 ...
- OpenCV中图像融合
准备2副背景图像,注意图像黑色的部分,是作为mask用的,我们会用灰度图的方式打开它们,这时黑色的部分值为0,则图像融合时候,可以把第二幅图像在黑色的部分显示出来. 代码非常简单,注意就是图 ...
- C#文件系统管理【转】
目录 前言 Directory类和DirectoryInfo类 File类和FileInfo类 Path类 前言 管理文件系统主要是对计算机中文件和目录的管理,例如,读取文件信息.删除文件和读取目录信 ...