Le contexte de flux est utilisé dans PHP pour configurer les propriétés et le comportement des flux. Grâce au contexte du flux, les développeurs peuvent définir différents types d'opérations de flux, spécifiez comment le flux est lu et écrit, l'ouverture des ressources, etc. Un contexte de flux est en fait un tableau ou une ressource contenant des options liées au flux, que PHP utilise pour définir diverses options liées aux opérations de flux.
Les paramètres de contexte de flux commun comprennent:
stream.wrapper_data : utilisé pour spécifier la configuration de l'emballage du flux.
HTTP : Options utilisées pour définir des flux HTTP, tels que les en-têtes de demande, les serveurs proxy, etc.
SSL : Options connexes pour configurer les connexions SSL, telles que les certificats, les mots de passe, etc.
Par exemple, le code pour créer un contexte de flux est le suivant:
<span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"http"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"method"</span></span><span> => </span><span><span class="hljs-string">"GET"</span></span><span>,
</span><span><span class="hljs-string">"header"</span></span><span> => </span><span><span class="hljs-string">"Accept-language: en\r\n"</span></span><span>
)
);
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>
Le contexte de flux est créé via la fonction Stream_Context_Create () et peut être utilisé dans les opérations de fichiers ou les opérations de flux de réseau.
Stream_Notification_Callback est une fonction de rappel liée aux flux de PHP. Cette fonction est utilisée pour recevoir et traiter les notifications dans les opérations de flux. Lorsque les opérations de streaming impliquent certains événements spéciaux (tels que l'échec d'ouverture des fichiers, l'interruption de connexion réseau, etc.), PHP peut informer les développeurs via des fonctions de rappel. La syntaxe de base est la suivante:
<span><span><span class="hljs-title function_ invoke__">stream_context_set_option</span></span><span>(</span><span><span class="hljs-variable">$context</span></span><span>, </span><span><span class="hljs-string">"notification"</span></span><span>, </span><span><span class="hljs-string">"callback"</span></span><span>, </span><span><span class="hljs-string">"stream_notification_callback"</span></span><span>);
</span></span>
stream_notification_callback reçoit un paramètre contenant des informations de notification, permettant aux développeurs de réagir en fonction des différents états de l'opération d'écoulement.
Ressource $ stream : représente la ressource de streaming liée à la notification actuelle.
int $ notification_code : Le type de notification est représenté par des constantes, telles que Stream_Notify_Connect , Stream_Notify_Disconnect , etc.
Int $ Gravité : La gravité de la notification, généralement un entier, plus le problème signifie que plus le problème est grave.
Message de chaîne $ : message notifié, fournissant des informations sur l'état de flux actuel.
La fonction de la fonction de rappel est de permettre aux développeurs de capturer et de répondre à ces notifications. Par exemple, lorsqu'une connexion de flux échoue, le développeur peut capturer ces informations dans la fonction de rappel et prendre des mesures correspondantes, telles que réessayer la connexion, enregistrer les journaux d'erreur, etc.
Il existe une connexion étroite entre Stream_Notification_Callback et le contexte de Stream. C'est à travers des paramètres de rappel dans le contexte du flux que les développeurs peuvent intégrer Stream_Notification_Callback en tant que mécanisme pour gérer les notifications de flux dans les opérations de flux. Plus précisément, la fonction Stream_Context_Set_option permet aux développeurs de définir des fonctions de rappel pour les événements de notification dans le contexte du flux.
Par exemple, lors de la création d'un flux de réseau et de la configuration d'une fonction de rappel, le développeur peut utiliser le code suivant:
<span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"notification"</span></span><span> => </span><span><span class="hljs-keyword">array</span></span><span>(
</span><span><span class="hljs-string">"callback"</span></span><span> => </span><span><span class="hljs-string">"stream_notification_callback"</span></span><span>
)
);
</span><span><span class="hljs-variable">$context</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_context_create</span></span><span>(</span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-variable">$fp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stream_socket_client</span></span><span>(</span><span><span class="hljs-string">"tcp://example.com:80"</span></span><span>, </span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>, STREAM_CLIENT_CONNECT, </span><span><span class="hljs-variable">$context</span></span><span>);
</span></span>
Dans le code ci-dessus, la fonction Stream_Socket_Client () ouvre une connexion TCP et lie la fonction de rappel personnalisée au contexte du flux. De cette façon, si un événement de notification se produit pendant la connexion, PHP appellera automatiquement Stream_Notification_Callback .
PHP's Stream_Notification_Callback peut capturer plusieurs types de notifications. Voici quelques types de notification courants et leurs significations:
Stream_Notify_Connect : indique que le flux a été connecté avec succès.
Stream_Notify_Disconnect : indique que le flux a été déconnecté.
Stream_notify_failure : indique que le fonctionnement du flux a échoué.
Stream_Notify_Auth_Required : indique que des informations d'authentification sont requises pour les opérations de streaming.
Les développeurs peuvent écrire une logique de réponse spécifique en fonction de ces types de notification. Par exemple, lorsque la connexion échoue, vous pouvez essayer de vous reconnecter; Lorsque la demande d'authentification est rencontrée, vous pouvez fournir des informations d'authentification, etc.