Nan, les script PHP pourraient, avec une faible probabilité, être concurrents (il suffit que l'interpréteur soit multi-thread ou multi-processus). Cela se voit très bien en exécutant un code comme ceci (pseudo-code, la source PHP est chez moi, pas au taff):
L'idée est de faire une page qui va afficher 128 balises images, chacune avec une URL différente. Le navigateur va alors faire 128 requêtes (ou moins, suivant la limite fixée), et ces requêtes seront en parallèle: on recevra les images par "paquets" (généralement, par 2 ou par 6 à cause de la limite du nombre de connexion / domaine).
Donc, cela tend à prouver que les 6 scripts PHP sont interprétés en même temps, en parallèle.
En revanche, le SQL (s'il est bien foutu), sera le goulot d'étranglement, et c'est lui qui exécutera les requêtes l'une après l'autre.
Mais il ne faut pas compter sur PHP pour être "séquentiel"...
Donc, un script PHP du genre:
Pourrait créer quelques soucis...Code :
[b]Page.php:[/b]
for $n=1 to 128 {
echo('<img src=\"page2.php?time=".time()."&n=".$n."\"/>');
}
[b]Page2.php[/b]
sleep(10); // wait 10 seconds
header('content-type:image/png');
imagepng(imagecreatefrompng('my-png-file.png'));
L'idée est de faire une page qui va afficher 128 balises images, chacune avec une URL différente. Le navigateur va alors faire 128 requêtes (ou moins, suivant la limite fixée), et ces requêtes seront en parallèle: on recevra les images par "paquets" (généralement, par 2 ou par 6 à cause de la limite du nombre de connexion / domaine).
Donc, cela tend à prouver que les 6 scripts PHP sont interprétés en même temps, en parallèle.
En revanche, le SQL (s'il est bien foutu), sera le goulot d'étranglement, et c'est lui qui exécutera les requêtes l'une après l'autre.
Mais il ne faut pas compter sur PHP pour être "séquentiel"...
Donc, un script PHP du genre:
Code PHP :
<?php
$x = mysql_query("SELECT `date` FROM `table` WHERE `id`=3");
mysql_query("UPDATE `table` SET `date`=($x+1) WHERE `id`=3");
Deux scripts PHP parallèles faisant alors, avec `date` qui vaut 0 au début:
Code PHP :
<?php
PHP1: $x = mysql_query("SELECT `date` FROM `table` WHERE `id`=3");
PHP2: $x = mysql_query("SELECT `date` FROM `table` WHERE `id`=3");
PHP1: mysql_query("UPDATE `table` SET `date`=($x+1) WHERE `id`=3");
PHP2: mysql_query("UPDATE `table` SET `date`=($x+1) WHERE `id`=3");