久久青青-住在隔壁的她动漫免费观看全集下载-free性护士vidos猛交-日韩免费高清视频-四虎三级-久久av免费-国产精品99精品久久免费-www日本视频-精品一区二区三区久久-色哟哟网站入口-少妇一区二区三区四区-国产一区二区三区三州-在线黄色网页-波多野结衣在线视频免费观看-欧美sm凌虐bdsm鞭打-亚洲av无码精品一区二区-国产精品免费久久久-18禁男女爽爽爽午夜网站免费-国产一区二区免费电影-单身男女免费观看全集-美女网站在线-俺去俺来也www色官网cms-婷婷九月综合-自拍亚洲一区-在线观看黄色动漫-日本男人天堂网-悠悠色综合网-久久鲁一鲁-男人爽女人-国产第一精品视频

蒙狼科技logo
設(shè)為首頁(yè)| 聯(lián)系我們
咨詢(xún)熱線(xiàn): 13917498722
  您的位置: 首頁(yè) > 網(wǎng)站資訊 > PHP 異步執(zhí)行方法,模擬多線(xiàn)程

PHP 異步執(zhí)行方法,模擬多線(xiàn)程

發(fā)布日期:2017/7/10

PHP 自己沒(méi)有多線(xiàn)程的東西,但可以曲線(xiàn)的辦法來(lái)造就出同樣的效果,比如多進(jìn)程的體例來(lái)達(dá)到異步調(diào)用,只限于飭令模式。

另外還有一種更簡(jiǎn)單的體例可用于 Web 程序中,那就是用 fsockopen()、fputs() 來(lái)請(qǐng)求一個(gè) URL, 而無(wú)需等待返回,假如你在那個(gè)被請(qǐng)求的頁(yè)面(URL)中做些事情就相當(dāng)于異步了。

關(guān)鍵代碼如下:

<?php
$fp=fsockopen('localhost',80,&$errno,&$errstr,5);
if(!$fp){
	echo "$errstr ($errno)<br />/n"; 
}
fputs($fp,"GET another_page.php?flag=1/r/n"); 
fclose($fp);

上面的代碼向頁(yè)面 another_page.php 發(fā)送完請(qǐng)求就不管了四川做網(wǎng)站報(bào)名,用不著等待請(qǐng)求頁(yè)面的響應(yīng)數(shù)據(jù),行使這一點(diǎn)就可以在被請(qǐng)求的頁(yè)面 another_page.php 中異步的做些事情了。

比如,一個(gè)很切實(shí)的應(yīng)用,我們每當(dāng)發(fā)表了一篇新日志后需要給所有該日志的訂閱者發(fā)個(gè)郵件通知, 假如按照通常的體例就是:

日志寫(xiě)完 -> 點(diǎn)提交按鈕 -> 日志插入到數(shù)據(jù)庫(kù) -> 發(fā)送郵件通知 -> 告知撰寫(xiě)者發(fā)布成功

那么作者在點(diǎn)提交按鈕到看到成功提醒之間可能會(huì)等待很常時(shí)間,基本是在等郵件發(fā)送的過(guò)程,比如連接郵件服務(wù)異常、或器緩慢或是訂閱者太多。而現(xiàn)實(shí)上是不管郵件發(fā)送成功與否,保證日志保存成功基本可接受的,所以等待郵件發(fā)送的過(guò)程是很不經(jīng)濟(jì)的,這個(gè)過(guò)程可異步來(lái)執(zhí)行,并且郵件發(fā)送的效果不太關(guān)心或以日志形式記錄備查。

改進(jìn)后的流程就是:

日志寫(xiě)完 -> 點(diǎn)提交按鈕 -> 日志插入到數(shù)據(jù)庫(kù) ---> 告知撰寫(xiě)者發(fā)布成功 ---> 發(fā)送郵件通知 -> [記下日志]

寫(xiě)個(gè)現(xiàn)實(shí)的程序來(lái)測(cè)試一下上海做網(wǎng)站中心app應(yīng)用,有兩個(gè)文件,分別是 write.php 和 sendmail.php,在 sendmail.php 用 sleep(seconds) 來(lái)模擬程序執(zhí)行所使用時(shí)間。

write.php,執(zhí)行耗時(shí) 1 秒:

<?php  
function asyn_sendmail(){ 
	$fp=fsockopen('localhost',80,&$errno,&$errstr,5);
	if(!$fp){
		echo "$errstr ($errno)<br />/n";
	} 
	sleep(1); 
	fputs($fp,"GET /sendmail.php?param=1/r/n"); #請(qǐng)求的資源 URL 一定要寫(xiě)對(duì) 
	fclose($fp); 
}  
echo time().'<br>'; 
echo 'call asyn_sendmail<br>'; 
asyn_sendmail(); 
echo time().'<br>'; 

sendmail.php,執(zhí)行耗時(shí) 10 秒:

<?php 
sleep(10); 
fopen("C:/".time(),"w");

通過(guò)頁(yè)面訪(fǎng)問(wèn) write.php,頁(yè)面輸出:

1272472697

call asyn_sendmail

1272472698

并且在 C:/ 生成文件:

1272472708

從上面的效果可以看出 sendmail.php 至少花費(fèi) 10 秒,但不會(huì)壅塞 write.php 繼續(xù)往下執(zhí)行,注解這一過(guò)程是異步的。

您可能感愛(ài)好的文章

  • php異步調(diào)試和線(xiàn)上調(diào)試網(wǎng)站程序的方法
  • javascript 異步加載,提高網(wǎng)頁(yè)的瀏覽速度
  • PHP Curl批量多線(xiàn)程打開(kāi)網(wǎng)址的類(lèi)
  • PHP判斷服務(wù)器SSL是否啟用,也就是判斷是否支撐HTTPS連接
  • PHP 行使 Curl Functions 實(shí)現(xiàn)多線(xiàn)程抓取網(wǎng)頁(yè)和下載文件
  • php獲取目錄所有文件并將效果保存到數(shù)組的程序
  • php行使curl實(shí)現(xiàn)多線(xiàn)程的類(lèi),php curl多線(xiàn)程下載圖片
  • PHP行使CURL_MULTI實(shí)現(xiàn)多線(xiàn)程




其他相關(guān)文章
  • 2012年十二月web設(shè)計(jì)與開(kāi)發(fā)熱點(diǎn)
  • 捂緊微信錢(qián)包,微信盜號(hào)木馬來(lái)了,有人已被盜刷上萬(wàn)元
  • 什么緣故原由造成了網(wǎng)站排名的高低
  • 2016年如何做好企業(yè)網(wǎng)站優(yōu)化
  • css3 2d之translate屬性
  • 追求突破轉(zhuǎn)型或是網(wǎng)站建設(shè)公司




  • 企業(yè)網(wǎng)站后臺(tái)使用
    購(gòu)物網(wǎng)站后臺(tái)使用
    網(wǎng)站產(chǎn)品圖片的處理



    農(nóng)業(yè)銀行支付
    建設(shè)銀行支付
    郵政儲(chǔ)蓄銀行支付



    企業(yè)網(wǎng)站建設(shè)
    整站建設(shè)
    購(gòu)物網(wǎng)站



    企業(yè)網(wǎng)站建設(shè)建議
    注冊(cè)適合自己的域名
    什么是虛擬主機(jī)




    售前咨詢(xún)QQ: 838821345
    售后服務(wù)QQ: 464698733
    應(yīng)急手機(jī):13917498722


    微信掃一掃
    添加24小時(shí)微信客服


    郵箱:lang@MENGL.CN
    地址:上海寶山區(qū)城銀路555弄2號(hào)樓3樓
    ICP備案:滬ICP備12042844號(hào)-3
     滬公網(wǎng)安備:31011402002917號(hào)
    做網(wǎng)站 | 企業(yè)網(wǎng)站建設(shè) | 上海做網(wǎng)站 | 企業(yè)網(wǎng)站制作 | 做網(wǎng)站的公司 | 關(guān)于蒙狼 | 整站建設(shè) | 購(gòu)物網(wǎng)站 | 企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo) | 成功案例 | 加盟代理 | 在線(xiàn)訂單
    服務(wù)區(qū)域: 臨港新區(qū)做網(wǎng)站 徐匯做網(wǎng)站 閔行做網(wǎng)站 長(zhǎng)寧做網(wǎng)站 虹口做網(wǎng)站 黃浦做網(wǎng)站 盧灣做網(wǎng)站 靜安做網(wǎng)站 浦東做網(wǎng)站 楊浦做網(wǎng)站 普陀做網(wǎng)站 閘北做網(wǎng)站 寶山做網(wǎng)站 嘉定做網(wǎng)站 松江做網(wǎng)站 昆山做網(wǎng)站
    Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.stoneowner.cn All Rights Reserved