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 Undefined index和Undefined variable的解决方法
Mar 27 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
PHP 代码规范小结
Mar 08 PHP
PHP输入流php://input介绍
Sep 18 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 PHP
php使用 readfile() 函数设置文件大小大小的方法
Aug 11 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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代码
2007/03/08 PHP
PHP 函数学习简单小结
2010/07/08 PHP
php二维数组转成字符串示例
2014/02/17 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
js判断字符长度以及中英文数字等
2013/12/31 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jquery插件orbit.js实现图片折叠轮换特效
2015/04/14 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
BootStrap3使用错误记录及解决办法
2016/12/22 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
python实现根据月份和日期得到星座的方法
2015/03/27 Python
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
200行python代码实现2048游戏
2019/07/17 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
详解python tkinter模块安装过程
2020/01/06 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
python实现登录与注册系统
2020/11/30 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
金融专业个人求职信范文
2013/11/28 职场文书
中学教师管理制度
2014/01/14 职场文书
总经理岗位职责范本
2014/02/02 职场文书
产品质量承诺范本
2014/03/31 职场文书
员工安全承诺书
2014/05/22 职场文书
经营管理策划方案
2014/05/22 职场文书
学校督导评估方案
2014/06/10 职场文书
美术教师个人工作总结
2015/02/06 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL