RAND() : Dans ou hors SQL ?

le Vendredi 3 Septembre 2010 à 13h48
Tiens je lisais un truc

Citation de la faq php du SdZ :

Comment sélectionner une ligne au hasard dans une table ?
Réponse:
En se servant de la fonction RAND() de MySQL.
Cette requête est à utiliser sur des tables peu fournies, plus vos tables seront conséquentes, et plus le temps de réponses de MySQL sera long


Et moi c'est le attention qui m'a interpellé... Me voilà donc parti pour un test sur une table de mes bases locales Sélectionner juste un id sur une table de 3000 enregistrement environ; le tout réalisé 10000 fois pour avoir une bonne comparaison.
1er cas :
SELECT `id` FROM `table` ORDER BY RAND() LIMIT 1;
2nd cas :
SELECT `id` FROM `table` WHERE `id`=$rand_defini_par_php;

Roulements de tambour... Le grand gagnant est le rand() défini par php :
Cas 1 : 25 secondes environ
Cas 2 : 0,5 secondes environ, soit 50 fois moins


Il y a donc 5ms d'écart entre chacune des opérations.



Voici le code de test pour vérifier Par contre, vu le temps requis il faut faire attention aux 30s d'exécution de php, on peut passer le script en console pour éviter ça.
<?php
mysql_connect('host','user','pass');
mysql_select_db('base');
function get_ms()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}

$debut_boucle_1=get_ms();
for($i=1;$i<=10000;$i++):
mysql_query('SELECT id from table order by rand() limit 1');

$fin_boucle_1=get_ms();
$temps_1=($fin_boucle_1-$debut_boucle_1);
echo '========= RAND dans BDD : '.$temps_1."\n";

$debut_boucle_2=get_ms();
$res = mysql_fetch_assoc(mysql_query('SELECT COUNT(id) as total from table'));
for($i=1;$i<=10000;$i++):
$rand = floor(rand(1,$res['total']));
mysql_query('SELECT id from table WHERE id='.$rand);
endfor;

$fin_boucle_2=get_ms();
$temps_2=($fin_boucle_2-$debut_boucle_2);
echo '========= RAND hors BDD : '.$temps_2."\n";
?>
Infos

Auteur : Jef

Catégorie : Actualité politique

Commentaires : 10 - Voir

fb Twit'it

Eric Woerth enquiquiné

le Mercredi 1 Septembre 2010 à 02h59
Les chaînes d'info se régalent de cette info :

Citation de france2.fr :

L'Express qui révèle dans son édition datée de mercredi la saisie mi-août par la police d'une lettre de mars 2007 dans laquelle l'ex-ministre du Budget et ex-trésorier de l'UMP demande à Nicolas Sarkozy de faire en sorte que M. de Maistre obtienne la Légion d'honneur pour services rendus à l'UMP.


C'est vrai qu'Eric Woerth doit être trop con pour laisser traîner une missive aussi compromettante, alors qu'à la date de la perquisition il était dans l'œil du cyclone depuis plus de deux mois...
Infos

Auteur : Jef

Catégorie : Actualité politique

Commentaires : 0 - Voir

fb Twit'it

Le réglement de la Coupe de France façon Bourgogne

le Dimanche 29 Août 2010 à 11h38

Citation de Commission des Coupes :

Les clubs ont la faculté de changer trois joueurs au cours de la partie. Tout joueur remplacé ne peut en aucun cas être autorisé à participer à nouveau au jeu à partir du 3ème tour.


Comment faut-il comprendre ces consignes?
Que à tous les tours le nombre de remplacements est limité à 3, mais qu'à partir du 3ème tour tout joueur sorti ne peut revenir en jeu? Ce qui sous-entend implicitement qu'aux tours précédents, il n'y a toujours que 3 changements, mais qu'un joueur sorti peut revenir quand même...
Oui, mais le retour du remplacé compte-t-il pour un remplacement ou pas?

Tel est l'imbroglio administratif créé par la Ligue...
Infos

Auteur : Jef

Catégorie : Football

Commentaires : 0 - Voir

fb Twit'it

[php] inclure un fichier en utilisant GD

le Vendredi 27 Août 2010 à 20h11
images/upload/1282931639.png
C'est énervant hein :
L'image trucmuche ne peut pas être affichée car elle contient des erreurs.
Surtout quand le code est correct, ça peut vite tourner à l'arrachage de cheveux...

En googlant j'ai trouvé un truc : plusieurs forumeurs avaient des soucis pour utiliser les instructions d'inclusion (include(), require(), etc) avec les fonctions d'affichage des images (imagepng(), imagejpeg(), etc). Et puis va savoir pourquoi, tiens!

C'est vrai que c'est un peu beaucoup nul... Et on fait quoi? Ben on cherche des solutions malgré tout.
Et c'est là qu'intervient l'astuce...

Soit le fichier à inclure comme ça :
<?php
// Plein de code là
?>


On va remplacer ce qu'on aurait fait naturellement :
include('fichier.php');

par ça
$file = file_get_contents('fichier.php');
$file = substr(trim($file),5,-3); // Pour virer les balises <?php et ?>
eval($file); // On exécute le code récupéré et hop


Et hop le tour est joué!
Have fun!
Infos

Auteur : Jef

Catégorie : Actualité politique

Commentaires : 0 - Voir

fb Twit'it

Vue sur le match du 5 septembre

le Vendredi 27 Août 2010 à 13h07
images/upload/1281622266.jpeg
LIGUE DE BOURGOGNE
COUPE DE FRANCE Tour : 3
Dimanche 05 septembre 2010 - 15H00
Val De Norge Fc - Longvic
Poste : Arbitre centre
Match N° : 12984388
Distance depuis votre domicile :
Terrain
STADE MUNICIPAL
Adresse
ROUTE D ORGEUX
21490 ST JULIEN
Officiels
Arbitre RIGOLLOT JEAN FRANCOIS
Arbitre assistant 1 REMOND CYRILLE
Arbitre assistant 2 CLOUZOT JEROME
Infos

Auteur : Jef

Catégorie : Actualité politique

Commentaires : 0 - Voir

fb Twit'it

jfrigollot.com/blog - © 2010 - Une réalisation JFRWeb - Mentions légales