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 输出简单动态WAP页面
Jun 09 PHP
PHP关联链接常用代码
Nov 05 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
一个PHP针对数字的加密解密类
Mar 20 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
Sep 30 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 Document 代码注释规范
2009/04/13 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
js实现Select下拉框具有输入功能的方法
2015/02/06 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
python实用代码片段收集贴
2015/06/03 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
python实现低通滤波器代码
2020/02/26 Python
python剪切视频与合并视频的实现
2020/03/03 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
应届生护士求职信
2013/11/01 职场文书
法务专员岗位职责
2014/01/02 职场文书
先进党支部事迹材料
2014/01/13 职场文书
土地转让协议书范本
2014/04/15 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
辞职信标准格式
2015/02/27 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书