大家好,我是你的好朋友思创斯。今天说一说php多线程编程_如何实现多线程,希望您对编程的造诣更进一步.
通过php的socket方式实现php程序的多线程。php本身是不支持多线程的,那么如何在php中实现多线程呢?可以想一下,web服务器本身都是支持多线程的。每一个访问者,当访问web页面的时候,都将调用新的线程,通过这一点我们可以利用web服务器自身的线程来解决php不支持多线程的问题。
下面给出通过 fsockopen() 建立socket连接,然后用 用fputs() 发送消息,来实现的php多线程类代码:
$fp=fsockopen($_server[‘http_host’],80,&$errno,&$errstr,5);
if(!$fp){
echo “$errstr ($errno)
\n”;
}
fputs($fp,”get $_server[php_self]?flag=1\r\n”);
fclose($fp);
上面这段代码只是一个线程的操作过程。多进行几个这样的操作就是多线程了。目前所谓php的多线程程序都是基于这个方式的。
下面给一个完整的线程类代码。
/**
@title:php多线程类(thread)
@version:1.0
@author:axgle
*/
class thread {
var $count;
function thread($count=1) {
$this->count=$count;
}
function _submit() {
for($i=1;$i<=$this->count;$i ) $this->_thread();
return true;
}
function _thread() {
$fp=fsockopen($_server[‘http_host’],80,&$errno,&$errstr,5);
if(!$fp){
echo “$errstr ($errno)
\n”;
}
fputs($fp,”get $_server[php_self]?flag=1\r\n”);
fclose($fp);
}
function exec($func) {
isset($_get[‘flag’])?call_user_func($func):$this->_submit();
}
}
//应用例子:
$th=new thread(10);//10个线程
$th->exec(‘demo’);//执行行自定义的函数
function demo() {
fopen(‘data/’.microtime(),’w’);
}
?>
python中的多进程与多线程(一)
一.背景 最近在azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 …
多线程爬坑之路-thread和runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,locks锁,atomic原子类) 多线程爬坑之路-thread和runable源码解析 前面 …
多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,locks锁,atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 …
java多线程
一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程 …
.net基础拾遗(5)多线程开发基础
index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ado.net与数据库开 …
java多线程基础——对象及变量并发访问
在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 …
c#多线程之线程池篇3
在上一篇c#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用backgroundworker组件的相关 …
c#多线程之线程池篇2
在上一篇c#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 …
c#多线程之线程池篇1
在c#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 …
c#多线程之线程同步篇3
在上一篇c#多线程之线程同步篇2中,我们主要学习了autoresetevent构造.manualreseteventslim构造和countdownevent构造,在这一篇中,我们将学习barrier …
随机推荐
echarts x轴显示不全
xaxis : [ { type : ‘category’, data : [‘采矿业’,’制造业’,’电力热力燃气及水生产和供应业’,’建筑业’], axistick: { alignwithlab …
使用jquery基本过滤选择器
你真的了解try{ return }finally{}中的return?
你真的了解try{ return }finally{}中的return? 今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class …
spoj 839 optimal marks(二进制位,最小割)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewproblem.action?id=17875 [题意] 给定一个图,图的权定义为边的两端点相抑或值的 …
【单调栈】vijos p1926 紫色的手链
题目链接: https://vijos.org/p/1926 题目大意: 给n个数(n<=100 000),求任意区间的最大值异或次大值的最大值. 题目思路: [模拟][单调栈] 我们维护一个严 …
drupal 实战
基本信息 作者: 葛红儒 丛书名: 实战系列 出版社:机械工业出版社 isbn:9787111429999 上架时间:2013-6-28 出版日期:2013 …
python基础 —time,datetime,collections)–时间模块&;collections 模块
python中的time和datetime模块是时间方面的模块 time模块中时间表现的格式主要有三种: 1.timestamp:时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算 …
java内存分配之堆、栈和常量池(转)
摘录自http://www.cnblogs.com/saramoring/p/5687466.html java内存分配主要包括以下几个区域: 1. 寄存器:我们在程序中无法控制 2. 栈:存放基本类 …
python删除执行路径下的空文件夹
def rm_emp_dir(path): “”” 删除指定路径下的空文件夹 :param path: 指定路径 :type path: str :return: non …
【python】web.py初识学习
简单而直接的python web 框架:web.py 2016年11月03日 14:09:08 擒贼先擒王 阅读数:35157更多 个人分类: web from:https://www.oschi …
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/140858.html