2011-02-08 5 views
0

Considérez ce qui suit:readfile vs comprennent

J'ai un grand projet qui se compose d'un site parent, aux côtés de plusieurs « enfants » des sites, auxquels ils partagent tous identiques « noyau/base » contenu .. (images , 'includes', stylesheets, etc.)

Mon intention est de faire en sorte que ces fichiers récurrents résident sur un serveur particulier, et de toujours faire référence au même chemin en cas de besoin. Cela entraînerait la modification de fichiers 'core' modifiés (images, 'includes', feuilles de style, etc.) affectant toutes les références croisées.

Quelle est la meilleure façon de faire?


actuellement, (peut-être temporairement) J'utilise les éléments suivants .. <?php readfile('http://remotepath.com/_core/includes/top_nav.php'); ?>

Ce qui est une tentative, à la solution la plus proche de <?php include('/filepath/'); ?>

Cela soulève une question évidente - en utilisant les éléments suivants pour cibler la page actuelle, ne fonctionnera plus .. Deuxièmement, récupérer le contenu via 'readfile' n'est pas sécurisé?

<?php $url = basename($_SERVER['SCRIPT_FILENAME']); echo $url; ?> 

ce sera bien sûr revenir le chemin de ce fichier, 'top_nav.php'

Comment puis-je obtenir la valeur de l'adresse URL/Web en utilisant une méthode similaire?

Toute idée serait bien appréciée! À votre santé.

Répondre

1

Ne faites pas cela.

Il est bon d'avoir vos images, scripts et feuilles de style sur un autre serveur. En effet, c'est en fait une bonne chose - cela signifie que vous pouvez avoir plus de téléchargements de fichiers simultanés, ce qui accélérera le chargement de votre site. Cependant, il sera très dommageable de faire include appels sur des fichiers distants. C'est parce que cela oblige votre serveur à faire une requête HTTP au serveur distant. Alors que cela a lieu (et il pourrait facilement prendre une seconde ou plus) votre script va faire rien du tout. Cela ralentira énormément votre site.

Par tous les moyens partager des fichiers entre les sites. Cependant, je vous encourage fortement à ne pas le faire lorsque vos pages sont rendues. Vous souhaiterez peut-être télécharger régulièrement des fichiers sur les serveurs enfants à partir du serveur parent, puis les inclure normalement à partir de votre système de fichiers local.

NB Le fait que vous pouvez appel include ou readfile sur HTTP ne signifie pas que vous devriez .

+0

Merci pour la perspicacité, bien prise! (J'ai pensé que c'était un problème) - Pouvez-vous me fournir un travail? Un échantillon, exemple? –

1

Ne pas inclure à distance les fichiers source. Si vous voulez la même copie d'une bibliothèque PHP sur un certain nombre de serveurs différents, il y a quelques façons simples de le faire. Vous pouvez cron un rsync qui copie périodiquement tous les changements du maître vers les esclaves, ou placez vos fichiers partagés dans un système de contrôle de code source comme git, puis lancez une commande "git pull" sur chaque esclave.

+0

je vous remercie pour la réponse, je vais regarder dans les 2 méthodes proposées. À la votre! –