Accès rapide


Derniers ajouts (08/01):
Chibi Devi! 11 & 12

Suggestions

Vote pour printemps 2012:
Sora no otoshimono
Asobi ni iku yo
Tantei opera Milky Holmes

Flash ≠ Web

Flash ce n'est pas du web

Envoyer/récupérer des fichiers par FTP entre serveurs avec PHP

Vous avez un hébergement X, et un hébergement Y. Ce sont des hébergements mutualisés, n’acceptant pas le FXP, et vous frémissez à l’idée de devoir télécharger sur votre pc des centaines de giga-octets pour les envoyer sur l’autre hébergement.

J’ai fait face à cette situation, et j’ai trouvé quelques commandes PHP pour permettre à un serveur de devenir le client FTP et envoyer les fichiers directement à l’autre serveur. Ou aller récupérer les fichiers depuis l’autre serveur, les deux sont possibles :)

Pour que le serveur X envoie les fichiers à Y (script à placer et exécuter sur X):

<?php
// connexion
$ftp_server = "serveur.com";
$conn_id = ftp_connect($ftp_server);
// login
$ftp_user_name = "utilisateur";
$ftp_user_pass = "motdepasse";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
// verif connexion
if ((!$conn_id) || (!$login_result)) { echo "Erreur"; exit; } else { echo "ok"; }
// parcours repertoires
ftp_chdir($conn_id, public_html);
ftp_chdir($conn_id, dossier);
// Transferts
ftp_put($conn_id, "01.ogv", "01.ogv", FTP_BINARY);
ftp_put($conn_id, "02.ogv", "02.ogv", FTP_BINARY);
ftp_put($conn_id, "03.ogv", "03.ogv", FTP_BINARY);
// fermeture
ftp_close($conn_id);
ftp_quit($conn_id);
?>

Pour que le serveur Y se connecte et récupère les fichiers sur X (script à placer et exécuter sur Y):

<?php
// connexion
$ftp_server = "serveur.com";
$conn_id = ftp_connect($ftp_server);
// login
$ftp_user_name = "utilisateur";
$ftp_user_pass = "motdepasse";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
// verif connexion
if ((!$conn_id) || (!$login_result)) { echo "Erreur"; exit; } else { echo "ok"; }
// parcours repertoires
ftp_chdir($conn_id, public_html);
ftp_chdir($conn_id, dossier);
// Transferts
ftp_get($conn_id, "01.ogv", "01.ogv", FTP_BINARY);
ftp_get($conn_id, "02.ogv", "02.ogv", FTP_BINARY);
ftp_get($conn_id, "03.ogv", "03.ogv", FTP_BINARY);
// fermeture
ftp_close($conn_id);
ftp_quit($conn_id);
?>

Oui ce script est un peu MacGyver car il est limité à 1 dossier et il est fastidieux à préparer si on a X fichiers aux noms bizarres. Aussi je sais pas comment ça va côté serveurs, mais je devine facilement que c’est pas économique côté charge processeur et processus PHP. Mais faute de mieux…

Bons transferts ;)

11 commentaires sur Envoyer/récupérer des fichiers par FTP entre serveurs avec PHP

  • mdS;

    salut,
    j’ai pas comprie ou se posé le probléme vue que je suis un noob et que j’ai jamais eu plus d’un seule serveur ^^
    mitsukarenai tu pourrai stp m’expliquer ? :jap:

  • Et bien imagine que tu dois transférer une très grosse quantité de données de ce serveur vers un autre: télécharger du premier serveur vers ton pc puis envoyer de ton pc vers le nouveau serveur prendrait beaucoup trop de temps, la vitesse d’envoi des connexions ADSL (et plus encore 3G) est ridicule.

    Alors avec ce script, le premier serveur va directement envoyer au second (ou le second va récupérer les fichiers du premier), profitant ainsi des connexions 100 Mb/s de ces serveurs.

    Par exemple pour transférer tous les streams: si je devais passer par mon pc, il faudrait au moins 3 mois. De serveur à serveur, ça ne prend « plus que » 20 heures :)

  • mdS;

    harigato pour les explication, j’ai chercher de mon coté aussi ^^ (je pensé pas avoir une réponse aussi rapide) a vrai dire j’ai pas fait attention et j’ai pas vue que c’était pour de l’hebergement mutualisé et non des serveurs dedié sinon le probléme ne se poserai pas nn ?

    PS:tellement de chose a apprendre moi:pff:

  • Avec un serveur dédié, la question est vite réglée: un simple client FTP et en avant la musique ^^

  • mdS;

    resalut,
    une autre question si tu permet mitsukarenai, des fois je telecharge au max de ma bande passante et des fois je suis bridé a 80-90ko/s mais je peut lancer d’autre fichiers en meme temps, je voulait savoir c’est bien les trucs max min machin que ta installer sur les serveurs qui font ca ?

  • Avec les hébergeurs mutualisés, je ne bride pas le débit. Eux peuvent limiter en fonction du trafic sur leurs serveurs, mais il doit bien y avoir au moins 400 ko/s (le max théorique pour tout le serveur est 12,5 Mo/s).

    Sinon il faut voir du côté du fournisseur d’accès internet (tu disais avoir un accès 3G, en la matière cet accès internet est tout particulièrement bridé par les FAI, dans tous les pays, car les capacités des antennes relais sont faibles).

    ps: sauf au Japon, où la concentration de population permet des technologies sans fil bien plus performantes que la 3G et la 4G.

  • FlyyTom

    Et ton transferts de fichier va durer combien de temps environ? (simple question)

  • … tu veux savoir ? :gniark:
    …en ai aucune idée :whaa:

    Positiver… positiver… :samu:

    … moins d’une semaine j’espère :blase: Je suis conscient du désagrément extrême si peu de temps avant la Japan Expo, mais je vais faire de mon mieux pour en faire une usine à gaz structure à la hauteur de mes ambitions. J’en appelle à votre indulgence ^^ ;

    ps: n’hésites pas à rédiger pendant ce temps ;)

  • FlyyTom

    Pas de soucis je vais me lancer jai du temps libre en ce moment. Mais après je vais beaucoup sortir et peut etre travailler donc vaut mieux que je m’y mette n__n

  • lecicine

    salut es que ya moyen de publier se qui est prêt step by step? comme sa on aura de quoi casser la croute :mrgreen:

  • Ce qui est prêt est déjà publié. C’est à dire: rien :whaa: J’espérais commencer ce matin, mais le serveur n’est pas encore débloqué…

Laisser un commentaire


Vous pouvez utiliser ces tags HTML (exemple: <b>votre texte en gras</b>)

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

:) :( ;) :x :roll: :rouge: :pff: :p :mrgreen: :jap: :-?