LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 10/03/2008 à 14:12
Probleme de jointure innoDB
Enfin bref, clés étrangères ou pas, tu dois spécifier les champs sur lesquels tu JOIN.
LA GLOBULE
le 10/03/2008 à 13:15
Probleme de jointure innoDB
Attention, les clés étrangères ne sont pas une conséquence de l'utilisation d'innoDB.

Tu les as créé comment tes clés étrangères ?

Et pour moi, tu dois quand même spécifier l'attribut sur lequel tu JOIN, ca parait logique. Sinon, avec ton raisonnement, tes tables seraient condamnées à joiner les autres que sur leurs clé primaire / étrangères.
LA GLOBULE
le 10/03/2008 à 10:07
Forcer le téléchargement d'un pdf
Voici la technique que j'utilise :

<?php
define ('DL_BUFFER', 16384);

function download ($blob, $filename) {
$filename = ereg_replace('[\\/:\*\?"<>\|;]', '_', str_replace('&#32;', ' ', $filename));

$isIE = $isIE6 = false;

if (isset($_SERVER["HTTP_USER_AGENT"])) {
$HTTP_USER_AGENT = $_SERVER["HTTP_USER_AGENT"];

if (strstr($HTTP_USER_AGENT, 'compatible; MSIE ') !== false && strstr($HTTP_USER_AGENT, 'Opera') === false) {
$isIE = 1;
}
if (strstr($HTTP_USER_AGENT, 'compatible; MSIE 6') !== false && strstr($HTTP_USER_AGENT, 'Opera') === false) {
$isIE6 = 1;
}
}

header('Pragma: ');
header('Cache-Control: cache');

if ($isIE) {
$filename = rawurlencode($filename);
header ("Pragma: public");
header ("Cache-Control: no-store, max-age=0, no-cache, must-revalidate");
header ("Cache-Control: post-check=0, pre-check=0", false);
header ("Cache-Control: private");
header ("Content-Disposition: inline; filename=$filename");
}

header ("Content-Type: application/octet-stream; name=\"$filename\"");
header ("Content-Disposition: attachment; filename=\"$filename\"");

if ($isIE && !$isIE6) {
header ("Content-Type: application/download; name=\"$filename\"");
}
else {
header ("Content-Type: application/octet-stream; name=\"$filename\"");
}

$size = strlen($blob);

$nb = ($size/DL_BUFFER);
$reste = ($size%DL_BUFFER);
for ($a=0; $a<$nb; $a++) {
echo substr($blob, $a*DL_BUFFER, DL_BUFFER);
flush();
}

echo substr($blob, -$reste);
flush();
}
?>


- $filename : le nom que tu veux donner au fichier
- $blob : le contenu binaire du fichier (récupérable avec un file_get_contents)
LA GLOBULE
le 10/03/2008 à 10:03
preg_match_all() et charge du serveur distant...
D'un point de vue de conception, tu as un problème, c'est à dire que tu dépends du site heroesofwarcraft.nainwak.org.
Si celui ci meurt, ta page meurt.

Bref, il faut faire des concessions dans ce cas la :
- abandonner le temps réel comme tu le fais actuellement, et récupérer l'xp du joueur une fois par heure par exemple
- stocker en base de données l'xp du joueur pour éviter de la redemander à ce site
- si le site distant est mort, afficher la dernière XP connue avec un petit message du genre "donnée peut être pas à jour"
- etc.
LA GLOBULE
le 07/03/2008 à 14:21
Stop à l'harcelement
Ce sont des boulets Free, ils peuvent très bien savoir (si tu leur fourni une ip + une date) quel modem à "écrit" ces messages.
LA GLOBULE
le 07/03/2008 à 13:27
Stop à l'harcelement
Pourquoi ne pas écrire à abuse@proxad.net ?

Et il fait quoi pour te harceler ?
(si son ip est dynamique, tu ne pourras faire grand chose de concluant et acceptable)
LA GLOBULE
le 07/03/2008 à 12:59
Requete ok sous PHP4, et ne fonctionne plus sous PHP5
Sammuel, tout comme Lupus mic, j'utilise beaucoup innodb (ne serait ce que pour les transactions), et pour le moteur de recherche du site, je duplique en fait mes tables en MyISAM avec un FULLTEXT.

Comment ca marche : quand un message est inséré dans mon forum, je l'insert dans une table innodb et je met aussi à jour d'autres tables, le tout dans une transaction. Ensuite, j'insere également le message dans une table MyISAM (et la, si la requete merde, ben elle merde, au pire les recherches du site seront moins précises, mais je perds pas l'intégrité de ma base principale innoDB).

Les raisons de ce choix :
- simplicité de mise en place
- faible cout CPU lors des recherches
- j'ai une petite base de données à la base (sans table dupliquée) et donc ma base n'est pas forcement beaucoup plus grosse avec ces tables dupliquées (la base pour lephpfacile : 100 Mo environ).

PS : cette technique était utilisée par wikipedia il n'y a pas ci longtemps que ca. Eux par contre, ils remplissaient les tables MyISAM toutes les nuits au lieu de les remplir à chaque insertion d'article => leur recherche était moins précise jusqu'à ce que la nuit arrive, mais le lendemain, la recherche donnait tous les résultats possibles.
PPS : les deux techniques sont combinables => tu peux insérer dans la table MyISAM au fur et à mesure et lancer toutes les nuits un script qui calculera le diff entre les deux tables et compléter la table MyISAM.
LoadingChargement en cours