JeuWeb - Crée ton jeu par navigateur
[Résolu] Benchmark PHP sur VPS - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Benchmark PHP sur VPS (/showthread.php?tid=6779)



[Résolu] Benchmark PHP sur VPS - Xenos - 13-04-2013

Bonsoir à tous!

Spoiler: Le problème ne porte pas sur le code: je cherche un VPS/dédié pour exécuter le script PHP

j'ai un script PHP:

<?php

$filename = '1.xml';

$start=microtime(true);
$N=1000;
for ($i=$N;$i>0;$i--)
{
$file = fopen($filename, 'r+');
if (flock($file, LOCK_EX))
{
fseek($file, 0, SEEK_END);
$flength = ftell($file);
fseek($file, 0, SEEK_SET);
$content = fread($file, $flength);
flock($file, LOCK_UN);
fclose($file);
}
else
echo('cannot get lock at i='.$i);
}
echo('Durée unitaire: ' . round(1000000.0*(microtime(true)-$start)/$N) . 'µs<br/>');


$start=microtime(true);
$N=1000;
for ($i=$N;$i>0;$i--)
{
$file = fopen($filename, 'r+');
fseek($file, 0, SEEK_END);
$flength = ftell($file);
fseek($file, 0, SEEK_SET);
$content = fread($file, $flength);
flock($file, LOCK_UN);
fclose($file);
}
echo('Durée unitaire (sans lock): ' . round(1000000.0*(microtime(true)-$start)/$N) . 'µs<br/>');
?>

Qui doit se trouver dans le même dossier qu'un XML, nommé "1.xml":

<?xml version="1.0" encoding="utf-8"?>

<comments>
<comment id="1">
<author>3</author>
<lang>fr</lang>
<date>21:04 13/04/2013</date>
<edits>
<edit>
<author>4</author>
<date>21:04 13/04/2013</date>
<why>Pour tester</why>
</edit>
</edits>
<text>
Je trouve ce passage totalement idiot et incompréhensible
</text>
<responses>
<comment id="8">
<author>3</author>
<lang>fr</lang>
<date>21:04 13/04/2013</date>
<edits>
</edits>
<text>
Moi pareil
</text>
<responses>
</responses>
</comment>
</responses>
</comment>
<comment id="5">
<author>3</author>
<lang>fr</lang>
<date>21:04 13/04/2013</date>
<edits>
<edit>
<author>4</author>
<date>21:04 13/04/2013</date>
<why>Pour tester</why>
</edit>
</edits>
<text>
Joyeux Noël
</text>
<responses>
</responses>
</comment>
</comments>

Ce script PHP est destiné à tester la rapidité des fonctions PHP "fopen / flock / fread". Le principe est le suivant:
  • Je bloque le fichier 1.xml
  • Je lis ce fichier
  • plus tard, je ferai des traitements sur le résultat de la lecture
  • J'écris dans le fichier
  • Je débloque le fichier

Mon but est, avec ce système, d'éviter les écritures concurrentes, et éviter ainsi le cas du "le script A lit le fichier, le script B lit le fichier, le script A écrit dans le fichier, le script B écrit dans le fichier", ce qui fait disparaitre le travail du script A, écrasé par le script B.

J'ai exécuté ce PHP sur mon serveur local (donc, sur mon PC), pour le résultat suivant:
Citation :Durée unitaire: 93µs
Durée unitaire (sans lock): 86µs

Ca dépote bien plus vite que ce que j'espérais (mais c'est Windows XP, alors le verrou est-il vraiment fiable?).
Je teste ensuite sur mon mutualisé OVH (perso):
Citation :Durée unitaire: 2163µs
Durée unitaire (sans lock): 1725µs

Je déchante un peu, mais bon...


Ma requête est la suivante: quelqu'un pourrait-il tester ce script PHP sur un VPS voire sur un dédié? J'aimerai savoir si la "lenteur" apparente des verrous est due au mutualisé, ou si c'est général à PHP.
Pour faire le test, il suffit de créer un fichier "*.php" contenant le code PHP ci-dessus, et de mettre un fichier "1.xml" (le nom est écrit en dur dans le code PHP, c'est pourquoi il est forcé de s'appeler ainsi), contenant le code XMl ci-dessus, dans le même répertoire que le *.php.

Ensuite, il n'y a plus qu'à visiter l'URL du fichier php, et à communiquer le résultat ici.
Je pense que la vitesse des verrous dépend du type d'hébergement (le mutualisé n'étant pas top), et j'aimerai donc avoir une comparaison avec vos VPS/dédiés si vous en avez.

Merci d'avance!


RE: Benchmark PHP sur VPS - php_addict - 15-04-2013

kimsufi ovh

Durée unitaire: 112µs
Durée unitaire (sans lock): 64µs


note: il faut un chmod 666 sur le fichier 1.xml


RE: Benchmark PHP sur VPS - srm - 15-04-2013

Durée unitaire: 9µs
Durée unitaire (sans lock): 8µs

Dédibox classic+

Edit :
Pardon j'avais testé en CLI pas en web, en web ça donne :
Durée unitaire: 10µs
Durée unitaire (sans lock): 9µs


RE: Benchmark PHP sur VPS - niahoo - 15-04-2013

En CLI :

Durée unitaire: 22µs
Durée unitaire (sans lock): 10µs


RE: Benchmark PHP sur VPS - Xenos - 15-04-2013

D'accord, merci à vous trois. La lenteur vient donc bien du mutualisé. Merci encore.