国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

實現PHP多線程異步請求的3種方法

2024-05-04 23:20:30
字體:
來源:轉載
供稿:網友
在網上看過很多版本的PHP異步請求方法,這里簡單總結幾個常用方法分享給大家

1、用CURL實現一步請求

CURL擴展是我們在開發過程中最常用的一種方法,他是一個強大的HTTP命令行工具,可以模擬POST/GET等HTTP請求,然后得到和提取數據,顯示在"標準輸出"(stdout)上面。

示例:

復制代碼 代碼如下:


<?php
$cl = curl_init();
$curl_opt = array(CURLOPT_URL, 'http://www.uncletoo.com/demo.php',
CURLOPT_RETURNTRANSFER, 1,
CURLOPT_TIMEOUT, 1,);
curl_setopt_array($cl, $curl_opt);
curl_exec($ch);
curl_close($ch);
?>


由于CUROPT_TIMEOUT屬性最小值為1,這就意味著在客戶端必須等待1秒,這也是使用CURL方法的缺點

2、用popen()函數實現異步請求

語法格式:popen(command,mode)

示例:

復制代碼 代碼如下:


<?php
$file = popen("/bin/ls","r");
//這里是要執行的代碼
//...
pclose($file);
?>


popen()函數直接打開一個指向進程的管道,速度快,即時相應。但是這個函數是單項的,要么讀要么寫,而且如果并發數較大,則會產生大量進程,給服務器造成負擔。

另外,如同示例中一樣,程序結束后一定要用pclose()來關閉。

3、用fscokopen()函數實現異步請求

我們在平時開發郵件發送功能等socket編程時,都會用到這個函數,在使用這個函數之前,我們要在PHP.ini 中開啟 allow_url_fopen 選項,另外在變成時,我們還要自己手動拼接出header部分。

示例:

復制代碼 代碼如下:


$fp = fsockopen("www.uncletoo.com/demo.php", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />/n";
} else {
$out = "GET /index.php / HTTP/1.1/r/n";
$out .= "Host: /r/n";
$out .= "Connection: Close/r/n/r/n";

fwrite($fp, $out);
/*這里忽略執行結果
*測試時可以打開
while (!feof($fp)) {
echo fgets($fp, 128);
}*/
fclose($fp);
}


PHP本身沒有多線程,但是我們可以用其他方式來實現多線程的效果,上面列舉的三種方式都有各自的優缺點,大家在使用時可以根據程序的需要擇優選擇。

UncleToo經驗尚淺,這里就簡單總結了這么多,如果有其他更好的實現PHP多線程的方法可以一起討論!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉首市| 漳州市| 五指山市| 萨迦县| 晋宁县| 米易县| 保德县| 前郭尔| 县级市| 礼泉县| 峨边| 化州市| 阳信县| 宁津县| 阳城县| 稷山县| 正宁县| 河东区| 临安市| 清徐县| 西充县| 巴里| 平谷区| 崇阳县| 达州市| 定西市| 富民县| 三台县| 乐业县| 万盛区| 康平县| 土默特右旗| 巩义市| 横峰县| 河东区| 建德市| 兴城市| 凤台县| 崇仁县| 庆安县| 南阳市|