Maison  >  Article  >  développement back-end  >  Conseils sur l'utilisation de la fonction de requête HTTP PHP

Conseils sur l'utilisation de la fonction de requête HTTP PHP

PHPz
PHPzoriginal
2023-06-17 10:56:351874parcourir

PHP, en tant que langage de bas niveau, est largement utilisé dans le développement de réseaux. Dans le développement Web, les requêtes http sont un élément essentiel. Cet article présentera les fonctions de requête http couramment utilisées en PHP, comment les utiliser et les techniques correspondantes.

1. curl

curl est une fonction de requête http très populaire, qui prend en charge divers protocoles, méthodes d'authentification, proxys et autres fonctions. Il fait partie du package d’installation de base PHP, aucune installation n’est donc requise pour l’utiliser.

(1) Utilisation de base

Exemple de code :

$url = 'http://www.example.com';
$ch = curl_init(); // 初始化curl
curl_setopt($ch, CURLOPT_URL, $url); // 设置请求的URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 将curl请求的结果保存到变量中,而不直接输出到屏幕
$res = curl_exec($ch); // 执行请求
curl_close($ch); // 关闭curl
echo $res;

Dans l'exemple ci-dessus, nous initialisons d'abord un handle curl à l'aide de la fonction curl_init(), puis appelons curl_setopt() définit deux options : <code>curl_init()函数初始化了一个curl句柄,然后调用curl_setopt()函数设置了两个选项:

  • CURLOPT_URL:设置请求的URL。
  • CURLOPT_RETURNTRANSFER:设置curl直接将结果保存到变量中,而不打印出来。

最后,我们调用curl_exec()执行请求,并使用curl_close()关闭curl句柄。请求返回的结果将保存在变量$res中,我们可以直接输出它。

(2)POST请求

在有时候,我们需要发送HTTP POST请求。在curl中,我们可以使用CURLOPT_POSTCURLOPT_POSTFIELDS选项来发送POST请求。

示例代码:

$url = 'http://www.example.com';
$post_data = array('key1' => 'value1', 'key2' => 'value2');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true); //设置为POST请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //设置POST参数
$res = curl_exec($ch);
curl_close($ch);
echo $res;

在上述代码中,我们首先设置了请求的URL和POST参数,然后在curl选项中设置了CURLOPT_POST标识为POST请求,并使用CURLOPT_POSTFIELDS设置POST参数。最后,我们使用curl执行请求并输出结果。

(3)超时设置

在使用curl时,我们可能会遇到超时问题。为了解决这个问题,curl提供了CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT选项。

  • CURLOPT_TIMEOUT:如果请求超时,curl会停止等待并立即退出。
  • CURLOPT_CONNECTTIMEOUT:如果curl在与远程主机建立连接时花费的时间超过此选项所设置的秒数,则认为连接失败,curl将停止等待并退出。

示例代码:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间设置为10秒
$res = curl_exec($ch);
curl_close($ch);
echo $res;

在上述代码中,我们在curl选项中设置了CURLOPT_TIMEOUT选项为10秒,表示如果请求超时超过了10秒,则curl将停止等待并退出。

2. file_get_contents

除了curl之外,PHP还提供了其他一些http请求函数。其中最基本的是file_get_contents。

(1)GET请求

示例代码:

$url = 'http://www.example.com';
$res = file_get_contents($url); // 直接获取URL的内容
echo $res;

在上述代码中,我们使用PHP内置的file_get_contents()

  • CURLOPT_URL : Définit l'URL demandée.
  • CURLOPT_RETURNTRANSFER : définissez curl pour enregistrer le résultat directement dans une variable sans l'imprimer.
Enfin, nous appelons curl_exec() pour exécuter la requête et utilisons curl_close() pour fermer le handle curl. Le résultat renvoyé par la requête sera enregistré dans la variable $res, et nous pourrons le sortir directement.

(2) Requête POST

Parfois, nous devons envoyer une requête HTTP POST. Dans curl, nous pouvons utiliser les options CURLOPT_POST et CURLOPT_POSTFIELDS pour envoyer des requêtes POST.

Exemple de code :

$url = 'http://www.example.com';
$context = stream_context_create(array('http' => array('timeout' => 10))); // 超时时间设置为10秒
$res = file_get_contents($url, false, $context);
echo $res;

Dans le code ci-dessus, nous définissons d'abord les paramètres URL et POST de la requête, puis définissons l'identifiant CURLOPT_POST en tant que requête POST dans les options curl et utilisons CURLOPT_POSTFIELDS Définissez les paramètres POST. Enfin, nous utilisons curl pour exécuter la requête et afficher les résultats.

(3) Paramètre de délai d'attente

Lors de l'utilisation de curl, nous pouvons rencontrer des problèmes de délai d'attente. Pour résoudre ce problème, curl fournit les options CURLOPT_TIMEOUT et CURLOPT_CONNECTTIMEOUT.

  • CURLOPT_TIMEOUT : si la requête expire, curl cessera d'attendre et se fermera immédiatement.
  • CURLOPT_CONNECTTIMEOUT : Si curl prend plus de temps que le nombre de secondes défini par cette option pour établir une connexion avec l'hôte distant, la connexion est considérée comme ayant échoué et curl cessera d'attendre et sortie.
Exemple de code :

$host = 'www.example.com';
$port = 80;
$timeout = 10;
$fp = fsockopen($host, $port, $errno, $errstr, $timeout); // 和服务器建立连接

$request = "GET / HTTP/1.1
";
$request .= "Host: $host
";
$request .= "Connection: close

"; // 请求头
fwrite($fp, $request); // 发送请求
while (!feof($fp)) {
    echo fgets($fp, 1024); // 输出结果
}
fclose($fp); // 关闭连接

Dans le code ci-dessus, nous définissons l'option CURLOPT_TIMEOUT dans l'option curl à 10 secondes, ce qui signifie que si le délai d'attente de la requête dépasse 10 secondes , alors curl cessera d'attendre et quittera.

2. file_get_contents

En plus de curl, PHP fournit également d'autres fonctions de requête http. Le plus basique d’entre eux est file_get_contents. 🎜🎜(1) GET request🎜🎜Exemple de code : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons la fonction file_get_contents() intégrée de PHP pour obtenir directement le contenu de l'URL et le sortir. 🎜🎜(2) Paramètre de délai d'attente🎜🎜Lors de l'utilisation de la fonction file_get_contents, nous devrons peut-être définir le délai d'attente. Nous pouvons créer un flux de contexte via la fonction stream_context_create() puis le transmettre comme troisième paramètre à la fonction file_get_contents(). 🎜🎜Exemple de code : 🎜rrreee🎜Dans le code ci-dessus, nous créons un flux de contexte et définissons son délai d'attente à 10 secondes. Nous utilisons ensuite la fonction file_get_contents() et transmettons le flux de contexte à la fonction comme troisième paramètre. 🎜🎜3. fsockopen🎜🎜fsockopen est une fonction en PHP utilisée pour ouvrir un socket. Nous pouvons l'utiliser pour communiquer directement avec le serveur. 🎜🎜Exemple de code : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons la fonction fsockopen() pour ouvrir une connexion socket et établir une connexion au port 80 de l'hôte www.example.com. Nous définissons ensuite un en-tête de requête GET et l'écrivons sur le serveur via le socket. Enfin, nous utilisons une boucle while pour afficher les résultats et la fonction fclose() pour fermer la connexion. 🎜🎜Résumé🎜🎜Les requêtes HTTP sont l'un des fondements du développement web. Cet article présente les fonctions de requête http couramment utilisées en PHP et comment les utiliser. Comprendre comment utiliser ces fonctions peut nous aider à mettre en œuvre les fonctions correspondantes plus facilement et plus efficacement. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn