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
傻瓜化配置PHP环境――Appserv
Dec 13 PHP
php计算十二星座的函数代码
Aug 21 PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
php查询及多条件查询
Feb 26 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
May 26 PHP
PHP设计模式入门之迭代器模式原理与实现方法分析
Apr 26 PHP
php png失真的原因及解决办法
Oct 24 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
javascript中的继承实例代码
2011/04/27 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
js控制input输入字符解析
2013/12/27 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
Python深入学习之对象的属性
2014/08/31 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python中super关键字用法实例分析
2015/05/28 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python+matplotlib实现鼠标移动三角形高亮及索引显示
2018/01/15 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
Python logging模块写入中文出现乱码
2020/05/21 Python
国际奢侈品品牌童装购物网站:Designer Childrenswear
2019/05/08 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
汽车工程专业应届生求职信
2013/10/19 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
爱祖国演讲稿
2014/05/04 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
法制教育主题班会
2015/08/13 职场文书