真正的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.59,则只能安装php5.4 #否则你只可以安装5.3.17。如果知道你的autoconf的版本——如果你已经安装了php.5.4那么,你就安装照5.4的安装;如果装了5.3就装5.3#5.4 wget http://www.php.net/get/php-5.4.7.tar.gz/from/cn.php.net/mirror tar zxvf php-5.4.7.tar.gz cd php-5.4.7/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.17.tar.gz cd php-5.3.17/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: 140703850592000 running ScopeTest2: 140703839512320 running ScopeTest2: 140703839512320 working ... ScopeTest2: 140703839512320 notified: 1 Process: notifying 140703839512320: 1 ScopeTest: 140703850592000 notified: 1 Process: notifying 140703850592000: 1
通过apache执行的还没有试过,因为我不想破坏现有的php环境,而且我也不打算在非cli模式下执行。
真正的PHP多线程(绝非fork或者用http再开进程)相关推荐
- php 唤醒http进程,真正的PHP多线程(绝非fork或者用http再开进程)_PHP教程
[plain] #如果你的autoconfig版本高于2.59,则只能安装php5.4 #否则你只可以安装5.3.17.如果知道你的autoconf的版本--如果你已经安装了php.5.4那么,你就安 ...
- mysql master线程 fork_多线程中fork的坑
多线程中fork的坑 问题所在 在写oj的时候,由于使用了线程池,并且在获取用户程序运行结果的时候使用的是管道进行子进程的标准输出的获取, 最后带来了一个问题,就是发现本来线程池有5个任务,最后调试信 ...
- Java多线程001——一图读懂线程与进程
本博客 猫叔的博客,转载请申明出处 前言 本系列将由浅入深,学习Java并发多线程. 一图读懂线程与进程 1.一个进程可以包含一个或多个线程.(其实你经常听到"多线程",没有听过& ...
- Linux基础学习系列:对于fork()函数的学习,及进程创建相关知识
fork()函数 :由当前进程再生成一个进程出来 #include <sys/types.h> #include <unistdh> pid_t fork(void); 返回: ...
- -bash: fork: Cannot allocate memory问题,进程数满了的解决办法
-bash: fork: Cannot allocate memory问题,进程数满了的解决办法 参考文章: (1)-bash: fork: Cannot allocate memory问题,进程数满 ...
- 20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。...
概念: 并行:同时运行 并发:看似同时运行 json后任然中文的问题 import jsond = {"名字":"初恋这件小事"}new_d1 = json. ...
- LInux线程——多线程与fork之间的问题
1.多线程中某个线程调用 fork(),子进程会有和父进程相同数量的线程吗? 1.1fork在创建线程前 pthread_fork1.c代码: #include<stdio.h> #inc ...
- localtime死锁——多线程下fork子进程
最近测试我们自己改进的redis,发现在做rdb时,子进程会一直hang住,gdb attach上,堆栈如下: (gdb) bt #0 0x0000003f6d4f805e in __lll_lock ...
- 调用 fork() 两次以避免僵死进程
当我们只fork()一次后,存在父进程和子进程.这时有两种方法来避免产生僵尸进程: 父进程调用waitpid()等函数来接收子进程退出状态. 父进程先结束,子进程则自动托管到Init进程(pid = ...
最新文章
- OpenCV下车牌定位算法实现代码
- 宁波Uber优步司机奖励政策(1月18日~1月24日)
- 数据运营者的福音:海量数据处理利器Greenplum
- C# IntPtr 与 string互转
- 计算机科学讨论,第七章计算机科学讨论报告
- No style sheet with given id found错误
- C语言答案杨崇艳,贯彻落实科学发展观,走新型工业化道路的要求是()。A.科技含量高B.经济效益好...
- linux调试-v-n区别,为你分享一些超好用的Unix/Linux 命令技巧
- 前端常用效果(3)带动画的比较型柱状图
- Cisco Guard BGP流量牵引配置
- 直线分割平面的公式_几种分割平面问题 | 学步园
- 推荐一款有趣的APP-种子习惯
- C# 获取笔记本电池信息 调用 Win32 Api
- obs摄像头模糊_用OBS如何直播 照着学就行了
- idea的简单使用,初始化过程
- 8个经典智能电子锁方案精选合辑
- linux编译ipp多线程,Linux下Intel IPP编程环境的配置
- Android之拍照后删除图片
- PDF/OCR识别提取工具:Readiris Pro 17 for Mac
- 网站优化怎么挖掘长尾关键词?
热门文章
- 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
- Django Rest Framework 部分源码剖析
- 深入Redis持久化 1
- 小程序是否转发群还是个人(转发功能)
- 十六、字符串和数组之间的转换
- mongoDB 3.0以前版本 - 入门指南、示例
- Android 使用GridView以表格的形式显示多张图片
- nginx 负载均衡集群解决方案 healthcheck_nginx_upstreams (一)
- Silverlight 游戏开发“.NET研究”小技巧:血条和进度条
- Seam 的一些必备知识