Forum : images externes et HTTPS

17 réponses
AuteurMessage

krucial |
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 03/02/2017 à 09:02

Salut à tous

J'ai un forum.

Dans ce forum, les visiteurs postent des messages.

Dans ces messages, parfois, les visiteurs "hotlinkent" des images externes (pas en http://www.forumconstruire.comOuvrir dans une nouvelle fenetre )

Pour passer en https, et de toutes façons pour assurer une meilleure qualité au site dans le temps et éviter les images externes qui disparaissent, je veux récupérer ces images et les stocker "chez moi", en https, a vie.

Techniquement, je vais passer en revue tous les tags [img] des messages, récupérer les URL, chopper les images, stocker et modifier les url des images dans les susdits messages. Pas de soucis.

Mais après je n'ai pas trop envie de m'emmerder à tout stocker sur mes serveurs.

Du coup, qu'est ce que vous me conseillez ? Je voudrais une solution simple pour uploader les images, qui fonctionne, pas besoin de faire de backup, en https. Un CDN ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 03/02/2017 à 10:29

Salut

J'ai choisi l'option d'un "proxy"
Tu appelles sur FC en https un script getimage.php?url=mon-image qui va faire un get de l'image et l'envoyer au visiteur
Tu ne stockes rien sur ton serveur

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

fun4fun | Pierre
Modérateur

Photo de fun4fun

Inscrit le : 14/12/2005

# Le 03/02/2017 à 10:30

Je m'y connais mal en stockage d'images mais chez nous on utilise le CDN d'OVH pour nos vidéos, soit 750 Go de vidéos et la BP qui va avec et ça nous coûte royalement 9.73€ pour le mois passé. C'est compatible https que j'ai vu dans leur dernière news.Pour ce qui est de la qualité, on a eu une ou deux micro-coupure (qques mins) en plus d'un an (GRA-1).

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 03/02/2017 à 10:35

devtribu a dit :
Salut

J'ai choisi l'option d'un "proxy"
Tu appelles sur FC en https un script getimage.php?url=mon-image qui va faire un get de l'image et l'envoyer au visiteur
Tu ne stockes rien sur ton serveur


Ca ne regle pas le probleme des images broken malheureusement Par exemple, il y a pas trop longtemps, une gros hebergeur d'image dont j'ai perdu le nom a effacé toutes les vieilles photo qu'il stockait. Resultat pour nous, des topics sans queue ni tete ...

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 03/02/2017 à 10:36

fun4fun a dit :
Je m'y connais mal en stockage d'images mais chez nous on utilise le CDN d'OVH pour nos vidéos, soit 750 Go de vidéos et la BP qui va avec et ça nous coûte royalement 9.73€ pour le mois passé. C'est compatible https que j'ai vu dans leur dernière news.Pour ce qui est de la qualité, on a eu une ou deux micro-coupure (qques mins) en plus d'un an (GRA-1).


Donc, chez OVH, ca ne fonctionne pas qu'en cache ? Tu peux envoyer sur le cdn tes videos, et ovh les garde a vie ? Ou les videos sont chez toi et le CDN fait office de passerelle / cache entre tes users et ton serveur ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

fun4fun | Pierre
Modérateur

Photo de fun4fun

Inscrit le : 14/12/2005

# Le 03/02/2017 à 10:41

krucial a dit :
Donc, chez OVH, ca ne fonctionne pas qu'en cache ? Tu peux envoyer sur le cdn tes videos, et ovh les garde a vie ? Ou les videos sont chez toi et le CDN fait office de passerelle / cache entre tes users et ton serveur ?


Nos vidéos sont stockées chez OVH, on n'a plus rien sur nos serveurs sauf un backup local au cas où...

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 03/02/2017 à 12:18

Pour moi, pas de stockage des urls, je modifie l'adresse en getimage.php?url= , comme devtribu
Par contre, je stocke sur le serveur plutôt que de get l'image à chaque appel du script.
Pour l'instant les images sont en local, je les stockerai ailleurs quand j'aurai une idée du volume total.
Ps : y'a pas que sur les forums, y'a aussi toutes les images des flux produits de partenaires qui ne sont pas encore passés au https...

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 03/02/2017 à 13:52

Ok zalex. Pas trop le bordel de gérer le hosting de tout ça ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 03/02/2017 à 16:58

Un peu. La difficulté c'est surtout de savoir ce qu'il faut purger.
Faut que j'ajoute une petite fonction pour identifier les url des [ img ] quand un utilisateur supprime un post, histoire de ne pas garder ce qui n'existe plus sur le site.

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 03/02/2017 à 19:10

Ca parait etre une bonne solution ce que vous faites Zalex et dev,
Gerez le cache en local et apres passez une routine via un 'find' pour trouver des fichiers non mis a jour depuis X temps.
Kru ton fichier qui est plus dispo de toute facon tu va pas le ressortir de ton chapeau, affiche une image standard quand ton file_get echoue.

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 04/02/2017 à 07:37

Oui mais si dès le depart j'avais stocker en interne ces images, elles n'aurait jamais été perdues. Mieux vaut tard que jamais.

Je crois que je vais faire ca :

Je detecte ce qu'il y a entre [ img ] et [/ img ]

Si c'est externe, je choppe l'URL

Si l'image est encore en ligne, je la stocke chez ovh, comme fun4fun, sinon, je place une image de remplacement.

Je stocke le couple "ancienne_url" / "nouvelle_url" dans une table, pour verifier à chaque fois les correspondances et ne pas stocker plusieurs fois les mêmes images.

On peut aussi penser à mettre dans une table les couples "nouvelle_url / ID de message". Comme ça, quand des messages sont effacés, c'est facile de faire la maintenance.

"Et voila".

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

allogarage | Nicolas
Modérateur

Photo de allogarage

Inscrit le : 14/10/2008

# Le 04/02/2017 à 12:30

Bonjour,

Je ne sais pas si c'est une bonne solution, mais pour info je n'utilise pas de base d'équivalence, plutot un md5 de l'url du fichier
cette solution implique soit moins de 32000? fichiers, soit de séparer les images, par exemple par catégorie du forum?

ensuite pour checker au lieu de retélécharger l'image, je fais un check avec header HTTP. Le code en vrac si ca peut aider


function get_headers_with_stream_context($url, $context, $assoc = 0) {
$fp = fopen($url, 'r', null, $context);
$metaData = stream_get_meta_data($fp);
fclose($fp);

$headerLines = $metaData['wrapper_data'];

if(!$assoc) return $headerLines;

$headers = array();
foreach($headerLines as $line) {
if(strpos($line, 'HTTP') === 0) {
$headers[0] = $line;
continue;
}

list($key, $value) = explode(': ', $line);
$headers[$key] = $value;
}

return $headers;
}

$context = stream_context_create(array('http' => array('method' => 'HEAD')));

$picture_url = xxx
$file = _WWW.md5($picture_url).'.jpg';
if(file_exists($file)){
// le fichier existe, on vérifie la taille
$headers = get_headers_with_stream_context($picture_url, $context, 1);

// il se peut que le fichier ait été recompressé, donc on tolere un lambda (11 octets) entre les 2 versions
if(abs($headers['Content-Length']-filesize($file))>11){
// backup ancienne image
$src = fopen($file, 'r');
$file_backup = _WWW.md5($picture_url).'-backup.jpg';
$dest = fopen($file_backup,'w+');
$bytes = stream_copy_to_stream($src, $dest);
fclose($src);
fclose($dest);
// on remplace le fichier
$src = fopen($picture_url, 'r');
$dest = fopen($file,'w+');
$bytes = stream_copy_to_stream($src, $dest);
fclose($src);
fclose($dest);
}
}else{
// on crée le fichier
$src = fopen($picture_url, 'r');
$dest = fopen($file,'w+');
$bytes = stream_copy_to_stream($src, $dest);
fclose($src);
fclose($dest);
}
}

Guide comparatif des garages automobilesOuvrir dans une nouvelle fenetre | Guide comparatif des garages motoOuvrir dans une nouvelle fenetre | Annuaire auto motoOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 04/02/2017 à 17:58

Je ne suis pas sur que ca soit autorisé de stocker l'image externe
Je prefère risquer une image morte (facile à remplacer en js d'ailleurs) que de me prendre des recommandés

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 05/02/2017 à 18:55

Tu es sous la protection du statut d'hebergeur. A mon avis, pas de soucis. Facebook ou pinterest se genent pour stocker tes images sur leurs CDN ?

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 06/02/2017 à 11:15

Ca reste un cache, non ?

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 10/03/2017 à 15:27

Raaaaaaahh*

* souffrance du mec qui est en train de rendre son site de 13 ans compatible https

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

JeromeF | Jérôme
Membre

 

Inscrit le : 10/05/2005

# Le 10/03/2017 à 16:41

Avec la dernière version de Firefox, cela va devenir difficile de ne pas migrer ... le message est très explicite et effrayant pour monsieur toutlemonde.
http://hpics.li/058aed3Ouvrir dans une nouvelle fenetre exemple avec FC.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 10/03/2017 à 17:33

Je sais, je sais ...

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 29/03/2024 16:50:57 | Généré en 10.08ms | Contacts | Mentions légales |