真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在php中利用fsockopencur對(duì)異步進(jìn)行處理-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)如何在php中利用fsockopen cur對(duì)異步進(jìn)行處理,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出喀喇沁免費(fèi)做網(wǎng)站回饋大家。

首先,我們要?jiǎng)?chuàng)建一個(gè)請(qǐng)求入口:


其次,我們需要一個(gè)后臺(tái)處理程序,用戶是否在線并不影響它的運(yùn)行:

現(xiàn)在的問題是,在第一段代碼中,如何“提交給后臺(tái)”?我們通過一種非阻塞式的請(qǐng)求來實(shí)現(xiàn)這個(gè)功能。也就是創(chuàng)建一個(gè)可以被訪問的url,在這個(gè)url運(yùn)行第二段程序,通過一個(gè)請(qǐng)求來請(qǐng)求這個(gè)url,從而激活第二段程序自動(dòng)運(yùn)行。

接下來我們直接看代碼:

// 遠(yuǎn)程請(qǐng)求(不獲取內(nèi)容)函數(shù)
function _sock($url) {
 $host = parse_url($url,PHP_URL_HOST);
 $port = parse_url($url,PHP_URL_PORT);
 $port = $port ? $port : 80;
 $scheme = parse_url($url,PHP_URL_SCHEME);
 $path = parse_url($url,PHP_URL_PATH);
 $query = parse_url($url,PHP_URL_QUERY);
 if($query) $path .= '?'.$query;
 if($scheme == 'https') {
  $host = 'ssl://'.$host;
 }

 $fp = fsockopen($host,$port,$error_code,$error_msg,1);
 if(!$fp) {
  return array('error_code' => $error_code,'error_msg' => $error_msg);
 }
 else {
  stream_set_blocking($fp,true);//開啟了手冊(cè)上說的非阻塞模式
  stream_set_timeout($fp,1);//設(shè)置超時(shí)
  $header = "GET $path HTTP/1.1\r\n";
  $header.="Host: $host\r\n";
  $header.="Connection: close\r\n\r\n";//長連接關(guān)閉
  fwrite($fp, $header);
  usleep(1000); // 這一句也是關(guān)鍵,如果沒有這延時(shí),可能在nginx服務(wù)器上就無法執(zhí)行成功
  fclose($fp);
  return array('error_code' => 0);
 }
}

我們創(chuàng)建了一個(gè)基于fsockopen的函數(shù),這個(gè)函數(shù)中利用fsockopen去訪問url,但是在訪問時(shí),并不要求獲取url顯示的內(nèi)容,而是僅僅發(fā)出訪問請(qǐng)求,請(qǐng)求到達(dá)后馬上關(guān)閉這個(gè)訪問。這樣做的好處就是無需再等待被訪問的url是否返回了可靠的信息,節(jié)約了時(shí)間,這段代碼的執(zhí)行時(shí)間在0.1-0.2秒之間,對(duì)于普通訪客而言,幾乎察覺不到。因此,在使用時(shí),僅需要調(diào)用這個(gè)函數(shù)和對(duì)應(yīng)的url即可。不過,這里并沒有提供數(shù)據(jù)傳輸?shù)牟糠郑绾蝹鬏敂?shù)據(jù),其實(shí)只需要在$header中增加post的內(nèi)容即可。

除了fsockopen,curl其實(shí)也可以實(shí)現(xiàn)這樣的效果,有些主機(jī)上并不支持fsockopen,我們就可以使用curl來實(shí)現(xiàn)。

function _curl($url) {
 $ch = curl_init();
 curl_setopt($ch,CURLOPT_URL,$url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_TIMEOUT,1);
 $result = curl_exec($ch);
 curl_close($ch);
 return $result;
}

這段代碼的關(guān)鍵是提供了一個(gè)Timeout,僅1秒鐘,也就是說curl發(fā)出請(qǐng)求,無論是否接收到返回的內(nèi)容,1秒鐘之后都會(huì)關(guān)閉該訪問,因此這個(gè)函數(shù)的執(zhí)行數(shù)據(jù)為1.0-1.1秒之間。但對(duì)于用戶來說,如果是一個(gè)需要進(jìn)行數(shù)據(jù)處理的應(yīng)用,1秒中的等待幾乎是被忽略的,如果你希望用一段更簡單和容易被理解的代碼,可以選擇curl來實(shí)現(xiàn)。

關(guān)于如何在php中利用fsockopen cur對(duì)異步進(jìn)行處理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


網(wǎng)頁標(biāo)題:如何在php中利用fsockopencur對(duì)異步進(jìn)行處理-創(chuàng)新互聯(lián)
標(biāo)題來源:http://weahome.cn/article/digjse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部