php多线程并发实现方法


Posted in PHP onSeptember 30, 2016

本文实例讲述了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开发文件系统实例讲解
Oct 09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
php checkbox 取值详细说明
Aug 19 PHP
php处理斐波那契数列非递归方法
Feb 04 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP实现的简单缓存类
Jul 29 PHP
php使用文本统计访问量的方法
May 12 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 #PHP
分享PHP-pcntl 实现多进程代码
Sep 30 #PHP
PHP编写daemon process详解及实例代码
Sep 30 #PHP
PHP 极验验证码实例讲解
Sep 29 #PHP
php自定义函数转换html标签示例
Sep 29 #PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 #PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 #PHP
You might like
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Bootstrap简单表单显示学习笔记
2016/11/15 Javascript
详解vue中this.$emit()的返回值是什么
2019/04/07 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
[01:02:38]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第二场 1月10日
2021/03/11 DOTA
详细介绍Ruby中的正则表达式
2015/04/10 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
春节联欢会主持词
2014/03/24 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
合作经营协议书范本
2014/09/16 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
体育教师个人总结
2015/02/09 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL