`
xiaobo.liu
  • 浏览: 39845 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

在PHP中非阻塞应用的分析

    博客分类:
  • php
 
阅读更多
<!-- [if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:SpaceForUL/>
   <w:BalanceSingleByteDoubleByteWidth/>
   <w:DoNotLeaveBackslashAlone/>
   <w:ULTrailSpace/>
   <w:DoNotExpandShiftReturn/>
   <w:AdjustLineHeightInTable/>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]--><!-- [if gte mso 10]>
<style><!--mce:0-->


最近在公司的项目中,有一个功能,将 EXECL 中的数据批量导入到数据库里。 本地并发只能通过语言自己的特性在程序本身实现多任务效果,一般来说现在的语言会通过多线程或多进程的方式来实现。由于 PHP 不支持多线程,目前只能采用多进程方式,让操作系统来帮助实现本地并发。


public function httpRequest($params){
		//{"header":{"operation":"api.getScoreData"}, "params":{"cname":"ddddd","cpwd":"ddddd"}}
		$data = array("tb" =>$params); 
		// return json data
		$data_string = json_encode($data); 
		$tmp = $params[0]['savename'];
		$pid = $params['project_id'];
		// request url host http://localhost/webinsights/adminLink.php/Link/test/$tmp/$pid
		//$url = U("Link/test/$tmp","$pid");
		$ch = curl_init("http://localhost/webinsights/adminLink.php/Link/writeDataBase/$tmp/$pid");  
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                       
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                    
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
		curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                            
			'Content-Type: application/json',                                                                                  
			'Content-Length: ' . strlen($data_string))                                                                         
		);    
		curl_exec($ch);
		curl_close($ch);
	}

	public function writeDataBase(){
		//测试 php 异步 执行
		//sleep(10);
		$execlname = $_REQUEST['_URL_'][2];
		$project_id = $_REQUEST['_URL_'][3];
		$name = substr($execlname ,0,13 );
		$arr = F($name);
		
		$model = D('ItemsDetail');

		$data = array();
		ignore_user_abort(true); // run script in background
		set_time_limit(0); 
		foreach ( $arr as $k=>$v )
		{
			$data['linkname'] = $v['B'];
			$data['linkurl'] = $v['C'];
			$data['linktext'] = $v['F'];
			$data['loginurl'] = $v['E'];
			$data['pr'] = $v['D'];
			$data['project_id'] = $project_id;
            //info信息
			$data['ItemsInfo'] = array(
				"project_id" =>	$project_id,
				"lxname"     =>	$v['A'],
				"lxqq"       =>	$v['K'],
				"lxemail"    =>	$v['M'],
				"lxtel"      =>	$v['L'],
				"fkname"     =>	$v['J'],
				"fkaccount"  =>	$v['I'],
				"fkprice"    =>	$v['H'],
			
			);
			$model->batAdd($data);
			
			sleep(1);
		}
		F($name,NULL);
		exit;
	}
public function httpRequest($params){
		//{"header":{"operation":"api.getScoreData"}, "params":{"cname":"ddddd","cpwd":"ddddd"}}
		$data = array("tb" =>$params); 
		// return json data
		$data_string = json_encode($data); 
		$tmp = $params[0]['savename'];
		$pid = $params['project_id'];
		// request url host http://localhost/webinsights/adminLink.php/Link/test/$tmp/$pid
		//$url = U("Link/test/$tmp","$pid");
		$ch = curl_init("http://localhost/webinsights/adminLink.php/Link/writeDataBase/$tmp/$pid");  
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                       
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                    
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
		curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                            
			'Content-Type: application/json',                                                                                  
			'Content-Length: ' . strlen($data_string))                                                                         
		);    
		curl_exec($ch);
		curl_close($ch);
	}

	public function writeDataBase(){
		//测试 php 异步 执行
		//sleep(10);
		$execlname = $_REQUEST['_URL_'][2];
		$project_id = $_REQUEST['_URL_'][3];
		$name = substr($execlname ,0,13 );
		$arr = F($name);
		
		$model = D('ItemsDetail');

		$data = array();
		ignore_user_abort(true); // run script in background
		set_time_limit(0); 
		foreach ( $arr as $k=>$v )
		{
			$data['linkname'] = $v['B'];
			$data['linkurl'] = $v['C'];
			$data['linktext'] = $v['F'];
			$data['loginurl'] = $v['E'];
			$data['pr'] = $v['D'];
			$data['project_id'] = $project_id;
            //info信息
			$data['ItemsInfo'] = array(
				"project_id" =>	$project_id,
				"lxname"     =>	$v['A'],
				"lxqq"       =>	$v['K'],
				"lxemail"    =>	$v['M'],
				"lxtel"      =>	$v['L'],
				"fkname"     =>	$v['J'],
				"fkaccount"  =>	$v['I'],
				"fkprice"    =>	$v['H'],
			
			);
			$model->batAdd($data);
			
			sleep(1);
		}
		F($name,NULL);
		exit;
	}

public function httpRequest($params){
		//{"header":{"operation":"api.getScoreData"}, "params":{"cname":"ddddd","cpwd":"ddddd"}}
		$data = array("tb" =>$params); 
		// return json data
		$data_string = json_encode($data); 
		$tmp = $params[0]['savename'];
		$pid = $params['project_id'];
		// request url host http://localhost/webinsights/adminLink.php/Link/test/$tmp/$pid
		//$url = U("Link/test/$tmp","$pid");
		$ch = curl_init("http://localhost/webinsights/adminLink.php/Link/writeDataBase/$tmp/$pid");  
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                       
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                    
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
		curl_setopt($ch, CURLOPT_TIMEOUT, 1); 
		curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                            
			'Content-Type: application/json',                                                                                  
			'Content-Length: ' . strlen($data_string))                                                                         
		);    
		curl_exec($ch);
		curl_close($ch);
	}

	public function writeDataBase(){
		//测试 php 异步 执行
		//sleep(10);
		$execlname = $_REQUEST['_URL_'][2];
		$project_id = $_REQUEST['_URL_'][3];
		$name = substr($execlname ,0,13 );
		$arr = F($name);
		
		$model = D('ItemsDetail');

		$data = array();
		ignore_user_abort(true); // run script in background
		set_time_limit(0); 
		foreach ( $arr as $k=>$v )
		{
			$data['linkname'] = $v['B'];
			$data['linkurl'] = $v['C'];
			$data['linktext'] = $v['F'];
			$data['loginurl'] = $v['E'];
			$data['pr'] = $v['D'];
			$data['project_id'] = $project_id;
            //info信息
			$data['ItemsInfo'] = array(
				"project_id" =>	$project_id,
				"lxname"     =>	$v['A'],
				"lxqq"       =>	$v['K'],
				"lxemail"    =>	$v['M'],
				"lxtel"      =>	$v['L'],
				"fkname"     =>	$v['J'],
				"fkaccount"  =>	$v['I'],
				"fkprice"    =>	$v['H'],
			
			);
			$model->batAdd($data);
			
			sleep(1);
		}
		F($name,NULL);
		exit;
	}

<!-- [if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:SpaceForUL/>
   <w:BalanceSingleByteDoubleByteWidth/>
   <w:DoNotLeaveBackslashAlone/>
   <w:ULTrailSpace/>
   <w:DoNotExpandShiftReturn/>
   <w:AdjustLineHeightInTable/>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!-- [if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]--><!-- [if gte mso 10]>
<style><!--mce:1-->


上面是关键代码部分,下面解释一下 ignore_user_abort(true)  set_time_limit(0)  sleep(1) 这三个 PHP 函数用途

 

第一个是让 PHP 在后台自己执行代码 其目的是当用户关闭浏览器后后代码仍然在执行,也就说用户只要把 EXECL 文件传入到服务器后,任务就完成了,不需要开着浏览器 直到数据导入完毕。

 

第二个函数 控制 PHP 的执行时间;

 

第三个函数 是为了分散服务器压力 这样在用户导入大量的数据过程中 用户可以继续查看部分导入成功的数据信息

 

关于 httpRequest ()函数的目的是 使用 PHP 开启一个进程

End



  


  
分享到:
评论

相关推荐

    处理器中非阻塞cache技术的研究.pdf

    【处理器中非阻塞cache技术的研究】 在现代计算机系统中,处理器性能的提升是信息技术发展的关键。非阻塞cache技术作为一种重要的优化手段,旨在解决传统cache技术中存在的性能瓶颈,提高处理器的工作效率。本文将...

    Java语言中非阻塞算法的实现.pdf

    Java语言中非阻塞算法的实现.pdf

    Java语言中非阻塞算法的实现.zip

    非阻塞算法在Java语言中的实现是一个复杂而深入的话题,涉及到并发编程、多线程以及高效数据结构的设计。非阻塞算法,也称为无锁算法,主要特点是避免了线程间的互斥,使得多个线程可以同时进行计算,从而提高了系统...

    绿色施工中非绿色因素分析及控制对策

    绿色施工中非绿色因素分析及控制对策,杜太志,,绿色施工是实现绿色建筑的重要环节,在施工全过程体现了可持续发展战略。本文对建设项目施工过程的非绿色因素进行分析,然后针对�

    Python socket非阻塞模块应用示例

    本文实例讲述了Python socket非阻塞模块应用。分享给大家供大家参考,具体如下: 一 服务端程序 # 导入模块 import socketserver import random # 定义一个类 class MyServer(socketserver.BaseRequestHandler): #...

    处理器中非阻塞cache技术的研究

    现代高速处理器的设计中对于cache技术的研究已经成为了提高处理器性能的关键技术,本文针对在流水线结构中采用非阻塞cache技术进行分析研究,提高cache的命中率,降低缺少代价,提高处理器的性能,并介绍了“龙腾”...

    小结Node.js中非阻塞IO和事件循环

    例如,在使用express框架结合mongoose操作MongoDB数据库时,开发者可以利用Node.js的非阻塞特性,使得数据库操作不会阻塞主线程,从而保持应用的响应性和扩展性。即使是处理复杂的业务逻辑,Node.js也可以通过异步...

    半导体照明中非成像光学及应用.pdf

    "半导体照明中非成像光学及应用.pdf" 本文主要讨论半导体照明中非成像光学的应用和发展前景。半导体照明光源是21世纪新的光源形式,具有无可比拟的优点,充分利用功率型LED的优势,将非成像光学原理应用到实际型LED...

    噪声中非平稳信号的频谱分析.zip

    在“噪声中非平稳信号的频谱分析”这个主题中,我们将探讨如何在复杂的噪声环境中识别和分析那些不遵循固定频率模式的信号。MATLAB作为一个强大的数学计算和信号处理工具,被广泛用于此类分析。 1. **非平稳信号**...

    中非跨境电商发展面临的障碍分析与对策探讨.pdf

    然而,中非跨境电商的发展也面临着诸多挑战和障碍。 首先,非洲的政治风险较高,这对跨境电商的发展构成了障碍。政治稳定性是国际贸易的基础,但非洲部分国家政治局势动荡,政策的不确定性和变动性较大,这给中国跨...

    小波方法在股市分析中的应用

    ### 小波分析在股市分析中的应用 股市数据,如股票价格、交易量等,通常呈现出复杂的时间序列特性,包括趋势、周期性和随机波动。传统的分析方法,如随机过程和统计学模型,在处理这类数据时可能受限于其假设条件,...

    荧光余辉中非指数分量的数据处理算法分析.pdf

    本文主要分析和比较了在荧光型光纤测温系统中处理荧光余辉非指数分量的数据处理算法,特别是传统算法与Prony算法在非指数分量影响下的应用及精度。 首先,文章指出了在荧光余辉中非指数分量存在的问题。在高精度...

    移动应用中非权限相关隐私数据的识别方法.pdf

    移动应用中非权限相关隐私数据的识别方法

    中非跨境电商发展面临的障碍分析与对策探讨.zip

    《中非跨境电商发展面临的障碍分析与对策探讨》 在当今全球化的背景下,电子商务已经成为国际贸易的重要组成部分,而中非跨境电商作为其中一环,更是受到了广泛关注。然而,中非跨境电商的发展并非一帆风顺,诸多...

    论文研究 - 中非共和国班吉的秘密堕胎

    在中非共和国班吉的主要妇产医院,2000年进行的一项研究表明,秘密堕胎(CAs)占该服务记录的所有堕胎的43.4%。 我们研究的目的是评估过去4年中有关医疗保健管理工作的CA的演变。 患者和方法:我们进行了为期4年...

    虚拟仪器在电力系统谐波测量中的应用分析.pdf

    【电力系统谐波测量】电力系统谐波测量是指对电力系统中非正弦波形的电流和电压进行分析,以确定其中的谐波成分。谐波是由于非线性负载的存在,使得电流或电压不再呈现纯正弦波形,这可能导致电网效率下降、设备寿命...

    2021年中非电子商务报告(英).pdf

    《2021年中非电子商务报告》详细探讨了中非地区电子商务的发展、潜力与政策影响,重点关注移动服务在促进电子商务中的作用。本报告揭示了全球及区域电子商务的趋势,为中非地区的电子商务提供了深入的洞察。 一、...

Global site tag (gtag.js) - Google Analytics