2010-09-15 4 views
0

J'ai une variableQuel est le but de la fonction en php crc

$offset = abs(crc32($_SERVER["SERVER_NAME"]) % 500); 

et je ne comprends pas sa place dans le script. Tout ce qu'il semble faire est de générer un nombre aléatoire basé sur le nom du serveur (par exemple www.example.com). Est-ce une interprétation correcte de cette variable?

Merci

+0

Certainement ce n'est pas aléatoire. – hsz

Répondre

2

crc32 crée un Cyclic redundancy check du nom et moding puis par 500 réduit encore à un nombre compris entre 0 et 499. La première partie est essentiellement une signature du nom du serveur - ce n'est pas un nombre aléatoire exactement (en c'est la forme originale du CRC qui pourrait être utilisée pour reconstruire les données qui ont été corrompues), elle est utilisée plus comme un hash ici. La deuxième partie réduit la taille/échelle de ce hachage de sorte que chaque serveur qui visite obtient un nombre entre 0 et 499. L'espoir est qu'il est rare que le nombre soit le même pour deux serveurs, bien qu'il n'y ait aucune garantie réelle.

+0

s'accrocher, pourquoi le nombre changerait? Le script sera exécuté sur mon serveur, dont le nom de serveur est fixe: www.example.com. Alors, dites-vous que lorsque les utilisateurs visitent mon site, ils se verront attribuer des variables $ offset différentes? Parce qu'ils visitent différents serveurs? –

+0

Non, ce sera toujours la même chose pour votre serveur, mais si vous déplacez des serveurs ou si vous les renommez, le numéro changera. Il est difficile de commenter sur le point sans connaître le script entier, mais fondamentalement, il semble permettre au code de (a) identifier que vous avez déplacé des serveurs ou (b) fonctionner sur plusieurs serveurs à la fois stocker dans une seule base de données et identifier le la source. – Rudu

+0

Merci Rudi, cela a été le plus instructif –

2

Oui, il fait un nombre compris entre 0 et 499 qui ne diffère que si le nom du serveur est différent. Crc32 obtient une somme de contrôle numérique à partir d'une chaîne.

  • % 500 le fait entre -499 et 499.
  • abs rend positifs les nombres négatifs.