php多线程并发实现方法

 更新时间:2016年09月30日 09:19:30   作者:Bolshevik  
这篇文章主要介绍了php多线程并发实现方法,结合实例形式分析了php模拟多线程并发的相关操作技巧,以及在Linux平台借助shell实现多线程并发的操作方法,需要的朋友可以参考下

本文实例讲述了php多线程并发实现方法。分享给大家供大家参考,具体如下:

java里多线程就是一个new thread的事情,php依赖apache靠着linux底层有一个多线程的办法。

这里就来说说如果你无法操控apache的服务器,如何模拟php并发

<?php
if(function_exists('date_default_timezone_set')) {
  date_default_timezone_set('PRC');
}
function a()
{
 $time = time();
 sleep(3);
 $fp = fopen('result_a'.$time.'.log', 'w');
 fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
 fclose($fp);
}
function b()
{
 $time = time();
 sleep(3);
 $fp = fopen('result_b'.$time.'.log', 'w');
 fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
 fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
 a();
}
else if($_GET['act'] == 'b') b();
?>

以上代码,在本地写入一个文件。

如果你访问 localhost/a.php 在两个浏览器标签尽可能快的同时打开,发现两个文件创建时间相差为3秒

但是如果你访问localhost/a.php?act=b 另一个访问/a.php?act=a 你发现两个文件创建的时间几乎差不多。

对于apache来说同样的url意味着一个线程(我们或者说是进程),但是不同的URL意味着可以并发。

如果php内部有下载的动作

function runThread()
{
 down("http://localhost/test/a.php?act=a");
}
if($_GET['act'] == 'run')
{
 echo 'start:';
 runThread();
 echo ' End';
}

http://localhost/test/a.php?act=run

http://localhost/test/a.php?act=run&s=2

只要主访问的url不同,则认为是不同的进行,意味着并发。文件创建时间不为3秒

本地有Linux服务器的朋友也可以借助linux来进行模拟并发

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>

上面存成test.php, 然后写一段SHELL代码

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP实现页面跳转的多种方法

    PHP实现页面跳转的多种方法

    PHP被许多程序员用来开发WEB的首选语言,在实际开发中,网站的各项功能都可以通过PHP语言的编写来满足,比如PHP页面跳转这一方法,本文给大家介绍了PHP实现页面跳转的多种方法,需要的朋友可以参考下
    2024-10-10
  • php中隐形字符65279(utf-8的BOM头)问题

    php中隐形字符65279(utf-8的BOM头)问题

    这篇文章主要介绍了php中隐形字符65279问题解决方法,其实就是utf-8文件的BOM头,本文给出了一个删除PHP文件BOM头的小程序,需要的朋友可以参考下
    2014-08-08
  • PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】

    PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】

    这篇文章主要介绍了PHP基于PDO调用sqlserver存储过程通用方法,结合实例形式分析了基于Yii框架采用pdo调用sqlserver存储过程的相关操作步骤与实现技巧,需要的朋友可以参考下
    2017-10-10
  • PHP 过滤页面中的BOM(实现代码)

    PHP 过滤页面中的BOM(实现代码)

    本篇文章是对PHP中过滤页面中的BOM的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php解决跨域问题的方法详解

    php解决跨域问题的方法详解

    跨域的严格一点来说就是只要协议,域名,端口有任何一个的不同,就被当作是跨域,这篇文章主要为大家详细介绍了php解决跨域问题的相关方法,需要的可以参考下
    2024-04-04
  • PHP实现获取url地址中顶级域名的方法示例

    PHP实现获取url地址中顶级域名的方法示例

    这篇文章主要介绍了PHP实现获取url地址中顶级域名的方法,结合实例形式分析了php使用parse_url()针对URL域名解析相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • 深入了解PHP类Class的概念

    深入了解PHP类Class的概念

    日常环境由无数实体组成:植物、人群、交通工具、食物……实在是太多了,光是把它们列出来都要花上几个小时的时间。每个实体都由一组性质和行为来定义
    2012-06-06
  • PHP 时间转换Unix时间戳代码

    PHP 时间转换Unix时间戳代码

    PHP 时间转换Unix 时间戳实现代码。
    2010-01-01
  • PHP 冒泡排序算法的实现代码

    PHP 冒泡排序算法的实现代码

    冒泡排序算法是很多学习计算机的人必修的一种最基础的算法。今天在网上找了很多代码,发现有c++的,有Ruby的,有Java的等等,就是很少找到php的,于是我就自己写了一下php的冒泡排序算法,希望对大家有所帮助。
    2010-08-08
  • PHP对京东联盟CPS的API调用

    PHP对京东联盟CPS的API调用

    这篇文章介绍了PHP调用京东联盟API的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07

最新评论