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

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

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

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

          另外還有一種更簡單的體例可用于 Web 程序中,那就是用 fsockopen()、fputs() 來請求一個 URL, 而無需等待返回,假如你在那個被請求的頁面(URL)中做些事情就相當于異步了。

          關(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);

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

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

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

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

          改進后的流程就是:

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

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

          write.php,執(zhí)行耗時 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"); #請求的資源 URL 一定要寫對 
          	fclose($fp); 
          }  
          echo time().'<br>'; 
          echo 'call asyn_sendmail<br>'; 
          asyn_sendmail(); 
          echo time().'<br>'; 

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

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

          通過頁面訪問 write.php,頁面輸出:

          1272472697

          call asyn_sendmail

          1272472698

          并且在 C:/ 生成文件:

          1272472708

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

          您可能感愛好的文章

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




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




        7. 企業(yè)網(wǎng)站后臺使用
          購物網(wǎng)站后臺使用
          網(wǎng)站產(chǎn)品圖片的處理



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



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



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




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


          微信掃一掃
          添加24小時微信客服


          郵箱:lang@MENGL.CN
          地址:上海寶山區(qū)城銀路555弄2號樓3樓
          ICP備案:滬ICP備12042844號-3
           滬公網(wǎng)安備:31011402002917號
          做網(wǎng)站 | 企業(yè)網(wǎng)站建設(shè) | 上海做網(wǎng)站 | 企業(yè)網(wǎng)站制作 | 做網(wǎng)站的公司 | 關(guān)于蒙狼 | 整站建設(shè) | 購物網(wǎng)站 | 企業(yè)網(wǎng)絡(luò)營銷 | 成功案例 | 加盟代理 | 在線訂單
          服務(wù)區(qū)域: 臨港新區(qū)做網(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)站 嘉定做網(wǎng)站 松江做網(wǎng)站 昆山做網(wǎng)站
          Copyright 2012-2025 上海蒙狼網(wǎng)絡(luò)科技有限公司 www.dayulega.com All Rights Reserved
          主站蜘蛛池模板: 宁德市| 威海市| 桐柏县| 温宿县| 三穗县| 惠来县| 河北区| 丹阳市| 靖远县| 余干县| 双峰县| 托里县| 梨树县| 梅河口市| 宝应县| 西丰县| 台中市| 枣强县| 精河县| 化州市| 宁阳县| 阿荣旗| 西乡县| 永丰县| 漾濞| 海南省| 伊通| 龙江县| 凯里市| 鸡西市| 乐昌市| 宜兰市| 永吉县| 弋阳县| 遂溪县| 修文县| 呼和浩特市| 揭东县| 襄城县| 宁南县| 通山县|