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创建PDF中文文档
Oct 09 PHP
判断是否为指定长度内字符串的php函数
Feb 16 PHP
php设计模式 Facade(外观模式)
Jun 26 PHP
PHP实现图片压缩的两则实例
Jul 19 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
php使用curl实现简单模拟提交表单功能
May 15 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
PHP中Static(静态)关键字功能与用法实例分析
Apr 05 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
使用xampp搭建运行php虚拟主机的详细步骤
2015/10/21 PHP
非常经典的PHP文件上传类分享
2016/05/15 PHP
php实现批量上传数据到数据库(.csv格式)的案例
2017/06/18 PHP
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jQuery功能函数详解
2015/02/01 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
原生js实现表格循环滚动
2020/11/24 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
详解Python字符串切片
2019/05/20 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
东南亚地区最大的购物网站Lazada新加坡站点:Lazada.sg
2016/07/17 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
初中英语课后反思
2014/04/25 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
2016年寒假家长评语
2015/10/10 职场文书
《多彩的民间艺术》教学反思
2016/02/16 职场文书
学生安全责任协议书
2016/03/22 职场文书
话题作文之成长
2019/12/09 职场文书
pytorch 中nn.Dropout的使用说明
2021/05/20 Python
python数字图像处理实现图像的形变与缩放
2022/06/28 Python