通过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源码解析 前面 ...

多线程爬坑之路-学习多线程需要来了解哪些东西&quest;&lpar;concurrent并发包的数据结构和线程池&comma;Locks锁,Atomic原子类&rpar;

前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

Java多线程

一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程 ...

&period;NET基础拾遗(5)多线程开发基础

Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

Java多线程基础——对象及变量并发访问

在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

C&num;多线程之线程池篇3

在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...

C&num;多线程之线程池篇2

在上一篇C#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 ...

C&num;多线程之线程池篇1

在C#多线程之线程池篇中,我们将学习多线程访问共享资源的一些通用的技术,我们将学习到以下知识点: 在线程池中调用委托 在线程池中执行异步操作 线程池和并行度 实现取消选项 使用等待句柄和超时 使用计时 ...

C&num;多线程之线程同步篇3

在上一篇C#多线程之线程同步篇2中,我们主要学习了AutoResetEvent构造.ManualResetEventSlim构造和CountdownEvent构造,在这一篇中,我们将学习Barrier ...

随机推荐

Echarts x轴显示不全

xAxis : [ { type : 'category', data : ['采矿业','制造业','电力热力燃气及水生产和供应业','建筑业'], axisTick: { alignWithLab ...

使用jQuery基本过滤选择器

你真的了解try&lbrace; return &rcub;finally&lbrace;&rcub;中的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&comma;datetime&comma;collections&rpar;--时间模块&amp&semi;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&period;py初识学习

简单而直接的Python web 框架:web.py 2016年11月03日 14:09:08 擒贼先擒王 阅读数:35157更多 个人分类: Web   From:https://www.oschi ...

php 怎么实现多线程,php 实现多线程相关推荐

  1. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  2. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

    在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...

  3. 多线程编程 java_java多线程编程

    一.多线程的优缺点 多线程的优点: 1)资源利用率更好 2)程序设计在某些情况下更简单 3)程序响应更快 多线程的代价: 1)设计更复杂 虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般 ...

  4. iOS多线程编程之多线程简单介绍(转载)

    一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcode,系统就会分别启动2个进程 通过& ...

  5. Python之多线程:python多线程设计之同时执行多个函数命令详细攻略

    Python之多线程:python多线程设计之同时执行多个函数命令详细攻略 目录 实现功能 采取方法 应用场景 实现功能 同时执行多个函数命令 采取方法 T1.单个实现 import threadin ...

  6. C#多线程学习(五) 多线程的自动管理(定时器) (转载系列)——继续搜索引擎研究...

    Timer类:设置一个定时器,定时执行用户指定的函数.               定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数. 初始化一个Timer对象: Timer timer ...

  7. 多线程介绍和多线程模块-lock-互斥锁

    多线程介绍和多线程模块 线程的特点: 线程的生命周期 开始 运行 结束 线程的退出: 进程执行完成 线程的退出方法 python的系统推出 模块函数 start_new_thread(func, ar ...

  8. java 秒杀多线程_秒杀多线程系列 - 随笔分类 - Joyfulmath - 博客园

    随笔分类 - 秒杀多线程系列 秒杀多线程系列,该系列转载至CSDN MoreWindows: http://blog.csdn.net/morewindows/article/details/7392 ...

  9. java 多线程 总结_Java 多线程总结

    昨天熬了个通宵,看了一晚上的视频,把java 的多线程相关技术重新复习了一遍,下面对学习过程中遇到的知识点进行下总结. 首先我们先来了解一下进程.线程.并发执行的概念: 进程是指:一个内存中运行的应用 ...

  10. C#多线程学习(一) 多线程的相关概念(转自xugang的blog)

    C#多线程学习(一) 多线程的相关概念 什么是进程? 当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源. 而一个进程又是由多个线程所组成的. 什么是线程? 线程 ...

最新文章

  1. [Flex]Flex SDK 4(Gumbo)改善的Layout和Scroller(二)
  2. 关于System.Web.Caching的“未将对象引用设置到对象的实例”错误
  3. 把左耳朵、史海峰等牛人引进饿了么,张雪峰是何许人也?
  4. Hybris commerce的promotion rule里的固定折扣功能
  5. java中事务实例,Java Spring 事务管理器入门例子教程(TranscationManager)
  6. gdb ldexp_带有Python示例的math.ldexp()方法
  7. 居中的文字在小屏幕下后面的换行
  8. bzoj 3384: [Usaco2004 Nov]Apple Catching 接苹果(DP)
  9. head标签中到底可以放什么?
  10. 黄光裕出来后,首先会做这三件事(转)
  11. 面试中常见智力题汇总
  12. 树莓派接入VGA显示器画面不全偏左的问题与VGA转HDMI连接显示器无法输出声音的解决
  13. 冰点还原8.57 官方中文版下载
  14. Android手机屏幕的三种状态
  15. 台式计算机调亮度,台式电脑怎么调节亮度(台式电脑亮度在哪里调节)
  16. Linux中的远程登陆服务
  17. 领导说“辛苦了”,怎么回才显情商高
  18. 攻击JavaWeb应用[3]-SQL注入[1]
  19. 退而求其次(4)——椭圆中的最大矩形
  20. 浅谈一下:运营网站的一些经历和故事

热门文章

  1. 2022CCPC广州站H - GameX Gym - 104053H
  2. word转HTML-python第三方包Mammoth
  3. 自定义拍照时 拍照界面_搞笑GIF:拍照时压倒性优势只需要一片柠檬
  4. 风石,元素生物和史诗级装备
  5. div盒子双线边框线内的颜色处理方法
  6. java mysql resultset count_Java ResultSetMetaData getColumnCount()方法的示例?
  7. 计算机环境下的审计技术方法有哪些,审计技术方法的类型包括哪些
  8. JMM Java内存模型的概念以及happens-before原则
  9. Ubuntu中百度输入法出现乱码问题
  10. 轻量级网络论文精度笔记(三):《Searching for MobileNetV3》