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、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
ThinkPHP中的三大自动简介
Aug 22 PHP
详解PHP中的Traits
Jul 29 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
php实用代码片段整理
Nov 12 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php中的单引号、双引号和转义字符详解
Feb 16 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 13 PHP
PHP dirname功能及原理实例解析
Oct 28 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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
JS中的继承操作实例总结
2020/06/06 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
分析在Python中何种情况下需要使用断言
2015/04/01 Python
从Python程序中访问Java类的简单示例
2015/04/20 Python
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Selenium(Python web测试工具)基本用法详解
2018/08/10 Python
Python Requests库基本用法示例
2018/08/20 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
python中sys模块是做什么用的
2020/08/16 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
请用用Java代码写一个堆栈
2012/01/26 面试题
护士专业推荐信
2013/11/02 职场文书
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
运动会解说词50字
2014/01/18 职场文书
老师的检讨书
2014/02/23 职场文书
2014年财政工作总结
2014/12/10 职场文书
用人单位聘用意向书
2015/05/11 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
反腐倡廉观后感
2015/06/08 职场文书
旅行社计调工作总结
2015/08/12 职场文书
详解Python为什么不用设计模式
2021/06/24 Python
Python实现视频中添加音频工具详解
2021/12/06 Python