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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
isset和empty的区别
Jan 15 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
May 15 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
PHP实现微信提现功能
Sep 30 PHP
CI框架附属类用法分析
Dec 26 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 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(一)
2012/03/21 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
jquery原创弹出层折叠效果点击折叠弹出一个层
2014/03/12 Javascript
jquery解决客户端跨域访问问题
2015/01/06 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python django生成迁移文件的实例
2019/08/31 Python
Python 3 使用Pillow生成漂亮的分形树图片
2019/12/24 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
python eventlet绿化和patch原理
2020/11/21 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
idealfit英国:世界领先的女性健身用品和运动衣物品牌
2017/11/25 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
年度考核评语
2014/01/19 职场文书
机关节能减排实施方案
2014/03/17 职场文书
初中英语课后反思
2014/04/25 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
师德承诺书2015
2015/04/28 职场文书
整脏治乱工作简报
2015/07/21 职场文书
新闻报道稿范文
2015/07/23 职场文书
使用python创建股票的时间序列可视化分析
2022/03/03 Python