IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Modifier une fonction PHP pour lancer plusieurs téléchargement à la fois sur Divers Serveurs Web


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut Modifier une fonction PHP pour lancer plusieurs téléchargement à la fois sur Divers Serveurs Web
    Bonsoir.

    J'ai une fonction PHP qui permet de lancer un téléchargement via le Header du navigateur web:

    Ce que je veux, c'est de:

    1 - Pouvoir lancer plusieurs téléchargement à la fois via cette fonction download_start().

    2 - Ajouter des Adresses IP de Serveurs pour permettre plusieurs téléchargement à la fois sur Divers Serveurs via cette fonctions download_start().

    Comment donc faire des téléchargements (plusieurs à la fois) sur Différents Serveurs Web via une fonction PHP ???

    Merci de m'aider à travers un exemple de Code s'il vous plaît.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu ne peux pas télécharger plusieurs fichiers en même temps, de la même façon que tu ne peux ouvrir plusieurs pages HTML avec un seul lien. Point.
    Ce que tu peux faire, c'est récupérer tous les fichiers (éventuellement en les enregistrant temporairement sur le serveur), les mettre dans une archive zip, et ensuite envoyer l'archive au navigateur. Ton utilisateur n'aura plus qu'à dézipper pour avoir tous les fichiers.

    Pour ton histoire de différents serveurs, aucune idée, vu que je ne sais ce que fait la fonction.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Citation Envoyé par Celira Voir le message
    Pour ton histoire de différents serveurs, aucune idée, vu que je ne sais ce que fait la fonction.
    Merci Celira pour ta réponse. Mais je parle de télécharger, ce n'est pas n'importe lequel. C'est un Web Crawler qui se base sur DOMElement pour télécharger via le user-agent. Voici le code complet ci-dessous. C'est parce-que c'est un peu long que je n'ai pas voulu tout posté. Et ce que je cherche à faire pour être explicite c'est d'améliorer la vitesse du Crawler pour télécharger rapidement un grand nombre d'url. .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    $start = "";
    // Our 2 global arrays containing our links to be crawled.
    $already_crawled = array();
    $crawling = array();
    function get_details($url) {
    	// The array that we pass to stream_context_create() to modify our User Agent.
    	$options = array('http'=>array('method'=>"GET", 'headers'=>"User-Agent: howBot/0.1\n"));
    	// Create the stream context.
    	$context = stream_context_create($options);
    	// Create a new instance of PHP's DOMDocument class.
    	$doc = new DOMDocument();
    	// Use file_get_contents() to download the page, pass the output of file_get_contents()
    	// to PHP's DOMDocument class.
    	@$doc->loadHTML(@file_get_contents($url, false, $context));
    	// Create an array of all of the title tags.
    	$title = $doc->getElementsByTagName("title");
    	// There should only be one <title> on each page, so our array should have only 1 element.
    	$title = $title->item(0)->nodeValue;
    	// Give $description and $keywords no value initially. We do this to prevent errors.
    	$description = "";
    	$keywords = "";
    	// Create an array of all of the pages <meta> tags. There will probably be lots of these.
    	$metas = $doc->getElementsByTagName("meta");
    	// Loop through all of the <meta> tags we find.
    	for ($i = 0; $i < $metas->length; $i++) {
    		$meta = $metas->item($i);
    		// Get the description and the keywords.
    		if (strtolower($meta->getAttribute("name")) == "description")
    			$description = $meta->getAttribute("content");
    		if (strtolower($meta->getAttribute("name")) == "keywords")
    			$keywords = $meta->getAttribute("content");
    	}
    	// Return our JSON string containing the title, description, keywords and URL.
    	return '{ "Title": "'.str_replace("\n", "", $title).'", "Description": "'.str_replace("\n", "", $description).'", "Keywords": "'.str_replace("\n", "", $keywords).'", "URL": "'.$url.'"},';
    }
    function follow_links($url) {
    	// Give our function access to our crawl arrays.
    	global $already_crawled;
    	global $crawling;
    	// The array that we pass to stream_context_create() to modify our User Agent.
    	$options = array('http'=>array('method'=>"GET", 'headers'=>"User-Agent: howBot/0.1\n"));
    	// Create the stream context.
    	$context = stream_context_create($options);
    	// Create a new instance of PHP's DOMDocument class.
    	$doc = new DOMDocument();
    	// Use file_get_contents() to download the page, pass the output of file_get_contents()
    	// to PHP's DOMDocument class.
    	@$doc->loadHTML(@file_get_contents($url, false, $context));
    	// Create an array of all of the links we find on the page.
    	$linklist = $doc->getElementsByTagName("a");
    	// Loop through all of the links we find.
    	foreach ($linklist as $link) {
    		$l =  $link->getAttribute("href");
    		// Process all of the links we find. This is covered in part 2 and part 3 of the video series.
    		if (substr($l, 0, 1) == "/" && substr($l, 0, 2) != "//") {
    			$l = parse_url($url)["scheme"]."://".parse_url($url)["host"].$l;
    		} else if (substr($l, 0, 2) == "//") {
    			$l = parse_url($url)["scheme"].":".$l;
    		} else if (substr($l, 0, 2) == "./") {
    			$l = parse_url($url)["scheme"]."://".parse_url($url)["host"].dirname(parse_url($url)["path"]).substr($l, 1);
    		} else if (substr($l, 0, 1) == "#") {
    			$l = parse_url($url)["scheme"]."://".parse_url($url)["host"].parse_url($url)["path"].$l;
    		} else if (substr($l, 0, 3) == "../") {
    			$l = parse_url($url)["scheme"]."://".parse_url($url)["host"]."/".$l;
    		} else if (substr($l, 0, 11) == "javascript:") {
    			continue;
    		} else if (substr($l, 0, 5) != "https" && substr($l, 0, 4) != "http") {
    			$l = parse_url($url)["scheme"]."://".parse_url($url)["host"]."/".$l;
    		}
    		// If the link isn't already in our crawl array add it, otherwise ignore it.
    		if (!in_array($l, $already_crawled)) {
    				$already_crawled[] = $l;
    				$crawling[] = $l;
    				// Output the page title, descriptions, keywords and URL. This output is
    				// piped off to an external file using the command line.
    				echo get_details($l)."\n";
    		}
    	}
    	// Remove an item from the array after we have crawled it.
    	// This prevents infinitely crawling the same page.
    	array_shift($crawling);
    	// Follow each link in the crawling array.
    	foreach ($crawling as $site) {
    		follow_links($site);
    	}
    }
    // Begin the crawling process by crawling the starting link first.
    follow_links($start);
    Merci de m'aider à améliorer la vitesse de téléchargement du Crawler pour télécharger très rapidement un plus volume d'url.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Tu ne peux pas multithreader un script PHP (pas sans extension non officielle en tout cas). Donc tu ne peux pas paralléliser des téléchargements.
    Le mieux que tu puisse faire c'est les ajouter à une liste et dépiler cette liste au fur et à mesure.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2013
    Messages : 453
    Par défaut
    Citation Envoyé par grunk Voir le message
    Le mieux que tu puisse faire c'est les ajouter à une liste et dépiler cette liste au fur et à mesure.
    Comment donc faire cela en modifiant le code ci-dessus ???

    Merci de m'aider à travers un exemple s'il vous plaît.

Discussions similaires

  1. modifier une fonction php de woocommerce proprement
    Par poezadri dans le forum WordPress
    Réponses: 5
    Dernier message: 03/05/2018, 23h28
  2. Réponses: 9
    Dernier message: 20/09/2008, 22h56
  3. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 18h22
  4. Modifier un champs texte avec une fonction PHP (calcul TVA)
    Par Stella2809 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/11/2005, 01h55
  5. Réponses: 1
    Dernier message: 22/09/2005, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo