Maison >développement back-end >Problème PHP >Quelle est la différence entre le socket php et curl

Quelle est la différence entre le socket php et curl

藏色散人
藏色散人original
2021-10-27 10:28:122265parcourir

La différence entre PHP socket et curl : 1. Socket est une structure de données qui peut être utilisée pour communiquer entre le serveur et le client ; 2. Curl utilise des réglementations de syntaxe URL pour transmettre des fichiers et des données et prend en charge de nombreux protocoles, tels que . FTP, HTTP, TELNET, etc.

Quelle est la différence entre le socket php et curl

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Quelle est la différence entre le socket php et curl ? La différence entre curl et socket dans php Session entre serveur et client. Le serveur est toujours en état d'écoute Lorsqu'un client se connecte au serveur, il ouvre un port sur lequel le serveur écoute une session. A ce moment, le serveur reçoit la demande de connexion du client puis effectue une boucle. Le client peut désormais envoyer des informations au serveur, et le serveur peut envoyer des informations au client.

Pour générer un socket, vous avez besoin d'un total de trois variables :

1, un protocole 2, un type de socket

3, un type de protocole public

Ce qui suit est une explication détaillée de ces trois variables, donnez-lui un compréhension approximative (mais j'espère que vous vous souviendrez de rire)

Protocole : Vous avez le choix entre trois protocoles lors de la génération d'un socket : 1 AF_INET Il s'agit d'un protocole largement utilisé pour générer des sockets et utilise le protocole de transmission TCP ou UDP. Adresse ipv4

2. AF_INET6 Évidemment, comme ci-dessus, la différence est que l'adresse ipv6 est utilisée

3. AF_UNIX est utilisée sur les machines Unix ou Linux. Elle est rarement utilisée et n'est utilisée que sur les serveurs et les clients qui sont tous deux Unix. ou les systèmes Linux.

Type de socket :
1. SOCK_STREAM Ce protocole est une connexion basée sur un flux d'octets séquentiel, fiable et complet. Il s'agit du type de socket le plus couramment utilisé. Ce socket utilise TCP pour la transmission.
2. SOCK_DGRAM Ce protocole est un appel de transfert sans connexion de durée fixe. Ce protocole n'est pas fiable et utilise UDP pour ses connexions.

3. SOCK_SEQPACKET Ce protocole est une connexion fiable à double ligne qui envoie des paquets de données de longueur fixe pour la transmission. Ce package doit être accepté dans son intégralité avant de pouvoir être lu.

4. SOCK_RAW Ce type de socket fournit un accès réseau unique. Ce type de socket utilise le protocole public ICMP. (ping et traceroute utilisent ce protocole)
5. SOCK_RDM Ce type est rarement utilisé et n'est pas implémenté sur la plupart des systèmes d'exploitation. Il est fourni pour la couche liaison de données et ne garantit pas l'ordre des paquets de données

Type de protocole public :
1. Protocole de message de contrôle Internet ICMP (Internet Control Message Protocol), principalement utilisé sur les passerelles et les hôtes pour détecter les conditions du réseau et signaler les messages d'erreur.
2. Protocole de contrôle de transmission TCP (Transmission Control Protocol), c'est le protocole le plus largement utilisé. peut garantir que le paquet de données atteint le récepteur. Si une erreur se produit au milieu, ce protocole renvoie le paquet de données.

3. UDP (User Datagram Protocol) est un protocole de transmission de données sans connexion et peu fiable.


D'accord, vous savez maintenant que générer un socket nécessite trois éléments, donc socket_create() en php nécessite trois paramètres, un protocole, un type de socket et un protocole public. Si la création réussit, socket_create() renvoie un type de ressource socket. Si elle échoue, alors vous recevrez un faux.

CURL

cURL est un outil qui utilise la syntaxe URL pour transférer des fichiers et des données. Il prend en charge HTTP, FTP et TELNET.

Pourquoi utiliser cURL ?

Parce que, si nous souhaitons parfois obtenir de manière flexible le contenu de la page Web, comme le traitement des cookies, la vérification, la soumission de formulaires, le téléchargement de fichiers, etc. Ensuite, vous devez utiliser cURL. On dit que PHP possède une puissante bibliothèque cURL (car je ne peux pas dire où se trouve le pouvoir, donc j'utilise "c'est dit" mdr).

Les étapes de base pour que PHP utilise les options cURL sont les suivantes :

1. Initialisation

2. Paramètres des paramètres

3. Obtenez ou utilisez le contenu de la page

4.

<?php
//初始化curl
$ch = curl_init ();
/*
 * 设置curl
 * php手册对于curl_setopt的解释为:设置对于curl传输的操作
 * curl_setopt有三个参数:资源(一般为你建立的curl句柄)、操作(你将对这个句柄作何操作)、参数(对于这个操作你给出的参数)
 */
//例如你想对百度进行某些操作
curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");
//现在看来你要向百度post数据
curl_setopt ( $ch, CURLOPT_POST, 1 );
/*给出了要post的数据:$post_string,post的数据可以是一个文件,
*那么你需要以@加上文件的全路径给出,或者你要post一些数据,
*那么你可以按照数组形式给出,或者按照字符串给出,
*如果你想按照字符串形式给出,请把字符串urlencode,嘿嘿
*/
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_string );
/*
 *把curl操作的结果以字符串形式 从curl_exec ()返回,而不是直接就输出了
 */
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
//得到操作返回结果
$result = curl_exec ( $ch );
//关闭curl句柄
curl_close ( $ch );

Parce que curl de PHP a de nombreuses opérations, il est probablement très difficile de toutes les mémoriser. Quoi qu'il en soit, je ne parviens pas à toutes les mémoriser. Parlons de certaines choses que tout le monde peut utiliser.

Obtenez des informations sur le serveur

<?php

//初始化curl
$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_exec($ch);
$info = curl_getinfo($ch);

var_dump($info);

Grâce à l'exemple ci-dessus, vous obtiendrez les informations suivantes :

"url" //Adresse réseau de la ressource
"content_type" //Encodage du contenu
"http_code" //Code d'état HTTP
"header_size" //Taille de l'en-tête
"request_size" //Taille de la requête
"filetime" // Création de fichier time
"ssl_verify_result" //Résultat de la vérification SSL
"redirect_count" //Technologie de saut
"total_time" //Temps total passé
"namelookup_time" //Temps de requête DNS
"connect_time" //Temps passé en attente de connexion
"pretransfer_time " //Préparation fastidieuse avant le transfert
"size_upload" //Taille des données téléchargées
"size_download" //Taille des données téléchargées
"speed_download" //Vitesse de téléchargement
"speed_upload" //Vitesse de téléchargement
"download_content_length "/ /La longueur du contenu téléchargé
« upload_content_length » // La longueur du contenu téléchargé
« starttransfer_time » // L'heure de démarrage du transfert
« redirect_time » // Le temps de redirection

En utilisant curl, vous pouvez également faire le opérations suivantes :

1. Simuler la post-opération de la page
2. Téléchargement de fichiers
3. Authentification HTTP
4. Téléchargement FTP
5. Technique FQ
6. Fonction de rappel
ps :
La prémisse majeure ci-dessus à propos de curl est que votre php est installé et compilé Avec --with-curlwrappers ajouté, vous pouvez utiliser l'opération phpinfo() pour vérifier si vous avez ajouté cette bibliothèque d'extension lors de la compilation.
Si cette extension est chargée, vous verrez quelque chose comme :

Si vous n'avez pas cette extension, vous devez modifier le fichier php.ini et supprimer le point-virgule devant extension=php_curl.dll.

D'accord, nous savons maintenant ce que sont socket et curl. Socket est une structure de données qui peut être utilisée pour communiquer entre le serveur et le client. Curl utilise des règles de syntaxe d'URL pour transférer des fichiers et des données et prend en charge de nombreux protocoles, tels que FTP, HTTP, TELNET, etc.

Apprentissage recommandé : "Tutoriel vidéo PHP"

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