Problème de conso de ressource avec <?php include();

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de conso de ressource avec <?php include();

par Invité » 21 mai 2007, 17:42

Ce qui posait problème surtout c'est la consommation de ressource.
Un technicien de 1and1 me l'a confirmé.

Il semblerait qu'elle soit beaucoup plus importante avec ce code
<?php
          include('http://www.nomdedomaine.com/ma_page.php');
?>
qu'avec celui ci:
<?php
          include('ma_page.php');
?>

par Sékiltoyai » 16 mai 2007, 18:56

J'ai fait le test, en fait sur le serveur local, s'il t'autorise à l'inclure, il inclue réellement le contenu, alors qu'il inclue le résultat du traitement si tu fais un appel distant.
Mais apparement ca dépend aussi d'options de configuration. De toute facon, pour ma part, j'ai mis ma directive allow_url_include à On pour faire le test et je l'ai remis à Off juste après, je pense que ce n'est pas une facon correcte de procéder, à moins bien sûr qu'on ait absolument besoin d'utiliser des scripts à distance (pour récupérer facilement le résultat d'un script, ou bien ne pas avoir à copier le script sur le serveur local...)

par Ryle » 16 mai 2007, 13:53

C'est d'autant plus recommandé d'utiliser des chemins relatifs, que si un jour où tu changes de nom de domaine (pour une raison ou pour une autre, genre passer sur un .fr par ex), ou si tu descend tout le site dans un dossier pour une question d'organisation, tu n'aurais pas à reprendre tout ton code pour modifier les chemins, il serait opérationnel immédiatement.

Je pense également que si tu utilises une url globale (avec http) tu n'inclues en réalité que le résultat du traitement effectué au lieu d'exécuter le code comme s'il se trouvait dans le même script. Cela peut avoir des contraintes pour passer des paramètres ou utiliser une session par exemple :)

par KingSora » 16 mai 2007, 12:02

Merci beaucoup, ça conforte donc ce que j'en avais déduit.

Je vais donc retirer toutes les url en http:// et ne mettre que les chemins relatifs.

Merçi!

par jpaul » 16 mai 2007, 11:52

Bonjour,

Je pense que l'on peut dire que si l'on indique un include avec http://, on va solliciter des ressources réseau pour utiliser le protocole http (et ensuite le système de fichier) afin de retrouver le fichier (que celui-ci soit local ou non).
Avec un include traditionnel, on ne sollicite que le système de fichier.

Donc : oui quand le fichier est local, il ne faut pas mettre http://... dans le chemin d'accès à l'include.

Problème de conso de ressource avec <?php include();

par KingSora » 16 mai 2007, 11:36

Tout est dans le titre.

Pour info, mon site web est hébergé sur un serveur mutualisé de 1and1 et j'ai reçu hier, après que mon site ai été coupé (erreur 403 de partout) la raison de cette coupure.

Mon site consommerai trop de ressource, et la source de cette consomation exessive m'a été envoyé:
/kunden/homepages/21/xxxxxxxxxx/htdocs/www/include.php:
---
46 <?PHP
47 include('http://kingdomfantasy.com/debut.php');
48 ?>
---
=> this is bad.

---
56 <?PHP
57 include('http://kingdomfantasy.com/newsboard.php');
58 ?>
---
=> this is bad, too.
En fouinant sur certain site j'ai cru comprendre que 1and1 préférai les includes sans le nom de domaines à l'intérieur.
Pas de panique. C’est juste que votre hébergeur (1and1 par exemple) interdit l’utilisation d’adresse extérieur pour cette fonction. (pour être précis, il interdit les URL au formats absolus (http://…))

Un petit exemple… imaginons que vous posséder le domaine www.bidule.info

L’adresse de votre blog est www.bidule.info

Tandis que le forum est à l’adresse www.bidule.info/forum/

Il vous suffit de mettre l’adresse relative dans votre thème pour afficher la liste.

<ul>
<?php include(’/support/extern.php?action=new&show=6′) ?>
</ul>

Et voila ! Le tour est joué.
Il faut tout de même savoir que l'adresse http://www.kingdomfantasy.com correspond à l'adresse de mon site, et qu'il ne s'agit pas d'une adresse extérieure. La méthode en mettant l'url http:// fonctionnait aussi bien que si je ne mettait que le chemin relatif dans le include()

Dois je comprendre qu'un include de cette forme:
<?PHP 
include('debut.php');
?>
consomme moins de ressources serveur qu'un include de cette forme:
<?PHP 
include('http://kingdomfantasy.com/newsboard.php');
?>
Si ce n'est pas le cas, quelles solutions s'offrent à moi pour consommer moins de ressource tout en gardant la possibilité d'appeller des morceaux de code HTML pour chacune de mes pages:

Pour info une page de mon site est construite de cette façon:

Code : Tout sélectionner

<HTML> <HEAD></HEAD> <BODY> <?PHP include('http://kingdomfantasy.com/menu_de_gauche.php'); ?> Le corps de ma page <?PHP include('http://kingdomfantasy.com/pied_de_page.php'); ?> </BODY> </HTML>
[/code]