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 用checkbox一次性删除多条记录的方法
Feb 23 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php使用curl存储cookie的示例
Mar 31 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
PHP小技巧之函数重载
Jun 02 PHP
Laravel框架数据库CURD操作、连贯操作总结
Sep 03 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP命名空间namespace用法实例分析
Sep 27 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 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 GUID生成函数和类
2014/03/10 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
简单JS代码压缩器
2006/10/12 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
javascript的函数作用域
2014/11/12 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
2018/07/31 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
JavaScript实现移动端弹窗后禁止滚动
2020/05/25 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
跟老齐学Python之开始真正编程
2014/09/12 Python
使用python编写监听端
2018/04/12 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
澳大利亚玩具剧场:Toy Playhouse
2019/03/03 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
如何掌握自荐信格式呢
2013/11/19 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
Redis高可用集群redis-cluster详解
2022/03/20 Redis