Maison développement back-end tutoriel php PHP utilise stream_context_create() pour simuler la méthode de requête POST/GET et un exemple d'analyse

PHP utilise stream_context_create() pour simuler la méthode de requête POST/GET et un exemple d'analyse

Jun 04, 2018 am 10:35 AM
context create stream

Cet article présente principalement comment PHP utilise stream_context_create() pour simuler les requêtes POST/GET. Il analyse en détail le principe de stream_context_create pour simuler les requêtes POST/GET sous forme d'exemples, de méthodes d'utilisation et de précautions associées. peut Pour référence,

Parfois, nous devons simuler POST/GET et d'autres requêtes côté serveur, c'est-à-dire implémenter la simulation dans le programme PHP. En d’autres termes, dans un programme PHP, si on vous donne un tableau, comment POST/GET ce tableau à une autre adresse ? Bien sûr, c'est facile de le faire en utilisant CURL, mais que se passe-t-il si vous n'utilisez pas la bibliothèque CURL ? En fait, il existe déjà une fonction connexe implémentée en PHP, et cette fonction est stream_context_create() dont je parlerai ensuite.

Vous montrer le code directement, c'est le meilleur moyen :


$data = array(
    'foo'=>'bar', 
    'baz'=>'boom', 
    'site'=>'localhost', 
    'name'=>'nowa magic'); 
$data = http_build_query($data); 
//$postdata = http_build_query($data);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type:application/x-www-form-urlencoded',
        'content' => $data
        //'timeout' => 60 * 60 // 超时时间(单位:s)
    )
);
$url = "http://localhost/test2.php";
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
echo $result;
Copier après la connexion


http Le le code de ://localhost/test2.php est :


$data = $_POST;
echo &#39;<pre class="brush:php;toolbar:false">&#39;;
print_r( $data );
echo &#39;
';
Copier après la connexion


Le résultat en cours d'exécution est :


Array
(
  [foo] => bar
  [baz] => boom
  [site] => localhost
  [name] => nowa magic
)
Copier après la connexion


Quelques points clés à expliquer :

1. Le programme ci-dessus utilise la fonction http_build_query() Si vous avez besoin de savoir. pour en savoir plus, vous pouvez vous référer à l'article précédent "Comment PHP utilise http_build_query() pour construire une chaîne d'URL".

2. stream_context_create() est utilisé pour créer des options de contexte pour l'ouverture de fichiers, telles que l'accès avec POST, l'utilisation d'un proxy, l'envoi d'en-têtes, etc. Créez simplement un flux, donnons un autre exemple :


$context = stream_context_create(array( 
    &#39;http&#39; => array( 
        &#39;method&#39; => &#39;POST&#39;, 
        &#39;header&#39; => sprintf("Authorization: Basic %s\r\n", base64_encode($username.&#39;:&#39;.$password)). 
        "Content-type: application/x-www-form-urlencoded\r\n", 
        &#39;content&#39; => http_build_query(array(&#39;status&#39; => $message)), 
        &#39;timeout&#39; => 5, 
    ), 
)); 
$ret = file_get_contents(&#39;http://twitter.com/statuses/update.xml&#39;, false, $context);
Copier après la connexion


3 Les options de contexte créées par stream_context_create peuvent être utilisées pour le flux ( flux), et peut également être utilisé dans les systèmes de fichiers. Il est plus utile pour les fonctions telles que file_get_contents, file_put_contents et readfile qui opèrent directement sur les noms de fichiers sans descripteurs de fichiers. L'ajout d'en-têtes à stream_context_create n'est qu'une partie de la fonction. Vous pouvez également définir des proxys, des délais d'attente, etc. Cela rend la fonction d'accès au Web pas plus faible que curl.

4. La fonction de stream_context_create() : créer et renvoyer un flux de données texte et appliquer diverses options, qui peuvent être utilisées pour les paramètres de délai d'attente, les serveurs proxy, les méthodes de requête et les paramètres d'informations d'en-tête de fopen(), file_get_contents() et autres processus spéciaux.

5. stream_context_create peut également résoudre le traitement du délai d'attente de file_get_contents en ajoutant l'option de délai d'attente :


$opts = array(
  &#39;http&#39;=>array(
  &#39;method&#39;=>"GET",
  &#39;timeout&#39;=>60,
 )
);
//创建数据流上下文
$context = stream_context_create($opts);
$html =file_get_contents(&#39;http://localhost&#39;, false, $context);
//fopen输出文件指针处的所有剩余数据:
//fpassthru($fp); //fclose()前使用
Copier après la connexion

Résumé : ce qui précède représente l'intégralité du contenu de cet article. , j’espère que cela pourra être utile à l’étude de chacun.

Recommandations associées :

phpPrincipe de tri rapide et méthode de mise en œuvre et exemple d'analyse

PHPExcel Méthodes et exemples simples pour implémenter la lecture de fichiers Excel

Le framework PHP MVC skymvc prend en charge plusieurs méthodes d'implémentation de téléchargement de fichiers

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que signifie le contexte ? Que signifie le contexte ? Aug 04, 2023 pm 05:27 PM

Le contexte est l'environnement et les informations d'état lorsque le programme est exécuté. Il peut inclure diverses informations, telles que la valeur des variables, la pile d'appels de fonctions, l'emplacement d'exécution du programme, etc., permettant au programme d'effectuer les correspondances. décisions basées sur différents contextes et effectuer les opérations correspondantes.

Comment déboguer les opérations Java Stream dans IntelliJ IDEA Comment déboguer les opérations Java Stream dans IntelliJ IDEA May 09, 2023 am 11:25 AM

Le fonctionnement du flux est un point fort de Java8 ! Bien que java.util.stream soit très puissant, de nombreux développeurs l'utilisent encore rarement dans leur travail réel. L'une des raisons les plus critiquées est qu'il est difficile à déboguer. C'était effectivement le cas au début, à cause des opérations de streaming. car le flux ne peut pas être utilisé dans DEBUG Lorsqu'il s'agit d'une ligne de code, lorsqu'il s'agit de l'étape suivante, de nombreuses opérations sont en fait passées en même temps, il nous est donc difficile de juger quelle ligne pose problème. Plug-in : JavaStreamDebugger Si la version d'IDEA que vous utilisez est relativement nouvelle, ce plug-in est déjà inclus et n'a pas besoin d'être installé. S'il n'est pas encore installé, installez-le manuellement, puis continuez ci-dessous.

Comment utiliser le contexte pour implémenter la mise en cache des requêtes dans Go Comment utiliser le contexte pour implémenter la mise en cache des requêtes dans Go Jul 22, 2023 pm 10:51 PM

Comment utiliser le contexte pour implémenter la mise en cache des requêtes dans Go Introduction : Lors de la création d'applications Web, nous avons souvent besoin de mettre en cache les requêtes pour améliorer les performances. Dans le langage Go, nous pouvons utiliser le package de contexte pour implémenter la fonction de mise en cache des requêtes. Cet article expliquera comment utiliser le package de contexte pour implémenter la mise en cache des requêtes et fournira des exemples de code pour aider les lecteurs à mieux comprendre. Qu’est-ce que le contexte ? : En langage Go, le package de contexte fournit un moyen de passer entre plusieurs goroutines

Comment utiliser le contexte pour implémenter le suivi des liens de demande dans Go Comment utiliser le contexte pour implémenter le suivi des liens de demande dans Go Jul 21, 2023 pm 05:57 PM

Comment utiliser le contexte pour implémenter le suivi des liens de demande dans Go Dans l'architecture des microservices, le suivi des liens de demande est une technologie très importante utilisée pour suivre la livraison et le traitement d'une demande entre plusieurs microservices. Dans le langage Go, nous pouvons utiliser le package de contexte pour implémenter le suivi des liens de demande. Cet article explique comment utiliser le contexte pour le suivi des liens de demande et donne des exemples de code. Tout d’abord, nous devons comprendre les concepts de base et l’utilisation du package contextuel. Le package de contexte fournit un mécanisme

Comment obtenir la valeur maximale du flux dans Java8 Comment obtenir la valeur maximale du flux dans Java8 May 14, 2023 pm 03:43 PM

Le flux de java8 prend maxpublicstaticvoidmain(String[]args){Listlist=Arrays.asList(1,2,3,4,5,6);Integermax=list.stream().max((a,b)->{if ( a>b){return1;}elsereturn-1;}).get();System.out.println(max);}Remarque : la taille est déterminée ici par des nombres positifs et négatifs et des valeurs 0. Au lieu de l'écrire directement if(a>b){returna;}elseretur

Comment utiliser le contexte pour implémenter le contrôle du délai d'expiration des requêtes dans Go Comment utiliser le contexte pour implémenter le contrôle du délai d'expiration des requêtes dans Go Jul 21, 2023 pm 12:18 PM

Comment utiliser le contexte pour implémenter le contrôle du délai d'expiration des requêtes dans Go Introduction : Lorsque nous effectuons des requêtes réseau, nous rencontrons souvent des problèmes de délai d'expiration des requêtes. Une requête réseau qui ne répond pas pendant une longue période gaspillera non seulement les ressources du serveur, mais affectera également les performances globales. Afin de résoudre ce problème, le langage Go a introduit le package contextuel, qui peut être utilisé pour implémenter le contrôle du délai d'attente des requêtes. Cet article expliquera comment utiliser le package de contexte pour implémenter le contrôle du délai d'expiration des requêtes dans Go et joindra des exemples de code correspondants. 1. Comprendre le contexte du package co

Comment utiliser le contexte pour mettre en œuvre une stratégie de nouvelle tentative de demande dans Go Comment utiliser le contexte pour mettre en œuvre une stratégie de nouvelle tentative de demande dans Go Jul 21, 2023 pm 04:39 PM

Comment utiliser le contexte pour implémenter une stratégie de nouvelle tentative de requête dans Go Introduction : Lors de la construction d'un système distribué, les requêtes réseau rencontreront inévitablement des échecs. Afin de garantir la fiabilité et la stabilité du système, nous utilisons généralement une stratégie de nouvelle tentative pour gérer ces demandes ayant échoué afin d'augmenter le taux de réussite de la demande. Dans le langage Go, nous pouvons utiliser le package de contexte pour implémenter la stratégie de nouvelle tentative de demande. Cet article explique comment utiliser le package de contexte dans Go pour implémenter une stratégie de nouvelle tentative de demande, avec des exemples de code. 1. Qu'est-ce que

Comment utiliser le contexte pour transmettre les paramètres de requête dans Go Comment utiliser le contexte pour transmettre les paramètres de requête dans Go Jul 22, 2023 pm 04:43 PM

Le package de contexte dans le langage Go est utilisé pour transmettre des informations contextuelles de requête dans le programme. Il peut transmettre des paramètres, intercepter des requêtes et annuler des opérations entre des fonctions sur plusieurs Goroutines. Pour utiliser le package de contexte dans Go, nous devons d'abord importer le package "context". Vous trouverez ci-dessous un exemple qui montre comment utiliser le package de contexte pour implémenter le passage des paramètres de requête. packagemainimport("contexte"

See all articles