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 相关文章推荐
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
php设计模式 Adapter(适配器模式)
Jun 26 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
PHP文件上传主要代码讲解
Sep 30 PHP
Yii扩展组件编写方法实例分析
Jun 29 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
Zend Framework入门教程之Zend_View组件用法示例
Dec 09 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
May 06 PHP
Centos7安装swoole扩展操作示例
Mar 26 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
10条php编程小技巧
2015/07/07 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
javascript实现的闭包简单实例
2015/07/17 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
React + webpack 环境配置的方法步骤
2017/09/07 Javascript
微信小程序中实现手指缩放图片的示例代码
2018/03/13 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
详解基于element的区间选择组件校验(交易金额)
2021/01/07 Javascript
Python解析xml中dom元素的方法
2015/03/12 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Flask框架配置与调试操作示例
2018/07/23 Python
python实现动态数组的示例代码
2019/07/15 Python
Django中URL的参数传递的实现
2019/08/04 Python
Python 使用元类type创建类对象常见应用详解
2019/10/17 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
2020/02/21 Python
python数字类型math库原理解析
2020/03/02 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
eBay德国站:eBay.de
2017/09/14 全球购物
工作表现评语
2014/01/19 职场文书
总经理助理职责
2014/02/04 职场文书
《跟踪台风的卫星》教学反思
2014/04/10 职场文书
班子四风对照检查材料
2014/08/21 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
公务员政审材料范文
2014/12/23 职场文书