濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP 請求上下文相關(guān)總結(jié)

PHP 請求上下文相關(guān)總結(jié)

熱門標(biāo)簽:新河科技智能外呼系統(tǒng)怎么樣 安裝電銷外呼系統(tǒng) 福州人工外呼系統(tǒng)哪家強 百度商鋪地圖標(biāo)注 注冊400電話申請 地圖標(biāo)注平臺怎么給錢注冊 常州地圖標(biāo)注服務(wù)商 釘釘打卡地圖標(biāo)注 衡水外呼系統(tǒng)平臺

我們首先來了解下什么是上下文。在我們寫文章,寫句子時,都會考慮一個觀點或者內(nèi)容的前后邏輯,轉(zhuǎn)承啟合,而在這個觀點前后的內(nèi)容就可以看成是它的上下文內(nèi)容。它包含了語境的意味在里面,其實代碼世界中的上下文也是一樣的意思,本身 Context 這個單詞就是環(huán)境、背景的意思。

接下來,我們來說說請求上下文又是什么呢?比如說我們要使用PHP來請求一個鏈接地址,通常我們會使用 curl 來進(jìn)行請求,但是 curl 的配置其實是比較復(fù)雜的,所以我們在簡單使用的情況下會使用 file_get_contents() 這種函數(shù)來快捷地請求鏈接。不過,可能很多人并不知道或者說沒怎么使用過它的上下文參數(shù)。其實,使用了上下文參數(shù)之后,file_get_contents() 不僅可以提交 POST 請求,還可以定義各種請求頭內(nèi)容。這些東西,就是一個請求的上下文,也就是它的執(zhí)行環(huán)境和背景。

首先,我們定義一個服務(wù)端,在這里只是輸出 \_GET 和 和_POST 里面的內(nèi)容。同時,我們還打印了 $_SERVER 來看看請求頭是否獲取到了。

print_r($_SERVER);

echo 'GET INFO', PHP_EOL;
foreach ($_GET as $k => $v) {
    echo $k, ': ', $v, PHP_EOL;
}

echo PHP_EOL,PHP_EOL;
echo 'POST INFO', PHP_EOL;
foreach ($_POST as $k => $v) {
    echo $k, ': ', $v, PHP_EOL;
}

接下來,在我們的測試代碼中,使用 file_get_contents() 來進(jìn)行 POST 提交。

$postdata = http_build_query(
    [
        'var1' => 'some content',
        'var2' => 'doh',
    ]
);

$opts = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata,
    ],
];

$context = stream_context_create($opts);
$result = file_get_contents('http://localhost:8088/?a=1', false, $context);
print_r($result);
var_dump($http_response_header);

在這里,我們只是用到了 stream_context_create() ,就能夠輕松地創(chuàng)建一個請求的上下文環(huán)境了。stream_context_create() 是創(chuàng)建上下文環(huán)境的函數(shù),它接收的參數(shù)是一個選項數(shù)組,里面用于定義當(dāng)前請求的相關(guān)選項。注意,我們這里其實定義的是 http/https 相關(guān)的選項,它還可以定義 ftp 、 socket 等相關(guān)的請求協(xié)議選項。

在使用 file_get_contents() 函數(shù)請求遠(yuǎn)程地址后,我們可以在 $http_response_header 變量內(nèi)獲取到請求返回的響應(yīng)頭信息。而且這個變量是會定義在當(dāng)前的局部作用域下,不用擔(dān)心全局作用域污染的問題。

非常簡單的方式就可以實現(xiàn) POST 請求了吧,另外我們還可以使用 fopen() 函數(shù)來實現(xiàn)類似的效果,不過獲取 body 和響應(yīng)應(yīng)信息時的方式就不同了。

$url = "http://localhost:8088/?a=1";

$opts = [
    'http' => [
        'method' => 'GET',
        'max_redirects' => '0',
        'ignore_errors' => '1',
    ],
];

$context = stream_context_create($opts);
$stream = fopen($url, 'r', false, $context);

// 返回響應(yīng)頭
var_dump(stream_get_meta_data($stream));

// 返回內(nèi)容
var_dump(stream_get_contents($stream));
fclose($stream);

在這段代碼中,我們使用 stream_get_meta_data() 函數(shù)來獲得響應(yīng)頭,使用 stream_get_contents() 來獲得響應(yīng)的內(nèi)容(body)。這樣其實就真的和 curl 的效果差不多了,而且最主要的是,當(dāng)前這種寫法更簡單方便。

從上面的代碼中我們可以看出,這種上下文相關(guān)的函數(shù)都是 Stream 類型的函數(shù),也就是流函數(shù)。它們是專門用來處理各種數(shù)據(jù)的,包括但不限于文件中的、網(wǎng)絡(luò)上的、壓縮文件以及其他一些操作的數(shù)據(jù)。在將來的學(xué)習(xí)中,我們還會接觸到其它的內(nèi)容。今天的學(xué)習(xí),其實是流的網(wǎng)絡(luò)數(shù)據(jù)處理中的一小部分內(nèi)容,大家先消化消化吧!

測試代碼: github.com/zhangyue050…

以上就是PHP 請求上下文相關(guān)總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于PHP 請求上下文的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • php 多線程上下文中安全寫文件實現(xiàn)代碼

標(biāo)簽:遼陽 六安 唐山 鷹潭 鶴崗 白城 克拉瑪依 柳州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP 請求上下文相關(guān)總結(jié)》,本文關(guān)鍵詞  PHP,請求,上下文,相關(guān),總結(jié),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP 請求上下文相關(guān)總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP 請求上下文相關(guān)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    萨迦县| 大埔县| 新平| 张家港市| 屏南县| 长兴县| 普兰店市| 仙游县| 景宁| 平利县| 呼玛县| 巴东县| 临夏市| 泰兴市| 南漳县| 宜兰市| 突泉县| 益阳市| 阳曲县| 莱州市| 阳信县| 泸水县| 民乐县| 靖州| 金昌市| 白水县| 广元市| 兴安县| 林甸县| 安泽县| 手机| 贵南县| 舞阳县| 兴城市| 连山| 德令哈市| 江都市| 五莲县| 乐山市| 玉屏| 满洲里市|