begin process at 2012 05 31 16:03:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

Les spécifications techniques des boucles en PHP et leur ressources serveur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Les spécifications techniques des boucles en PHP et leur ressources serveur

mercredi 3 novembre 2010 à 22:54:13 | Les spécifications techniques des boucles en PHP et leur ressources serveur

petitfwanz

Bonjour,

Je cherche à en savoir plus sur les boucles en PHP avec un niveau avancé.
Utilisation des boucles sur des sites à fort traffic, il faut des fois privilégier une boucle par rapport à une autre.

Si quelqu'un sait où je peux avoir les documentations?
jeudi 4 novembre 2010 à 03:06:18 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

neigedhiver

Salut,

Ben là, faut regarder le code source de PHP.
Ou alors, de manière empirique : benchmarks.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
jeudi 4 novembre 2010 à 08:18:48 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

syndrael

..après ..site à fort trafic.. ça veut dire quoi ?? Avec répartition de charge ?? avec ou sans système de cache ??
A mon avis et d'après mon expérience, hélas, je dis bien hélas, le code est la dernière chose qu'on touche sur les sites à fort trafiic lorsqu'il a des ralentissements.
Donc honnetement, et ma réponse va peut-être te vexer, ta question a-t-elle un sens dans le contexte technologique actuel ?
S.
jeudi 4 novembre 2010 à 10:59:48 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

cod57

Peux tu détailler

--> LES BOUCLES FOR, WHILE, DO ?

--> ITERATIONS SUR UN TABLEAU ?

b) for($i = 0; $i < count($array); $i++) { /* ... */ }

c) foreach($array as $key => &$val) { /* ... */ }

d) foreach($array as $key => $val) { /* ... */ }

e) while(list($key, $val) = each($array)) { /* ... */ }

--> http://doophp.com/benchmark ou des benchs sur des CMS ?
jeudi 4 novembre 2010 à 11:03:07 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

neigedhiver


S++

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
jeudi 4 novembre 2010 à 11:35:10 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

TychoBrahe

Salut,

Quand on se soucis des performances (en particulier pour les sites à fort trafic comme c'est le cas ici), alors on utilise pas PHP. Soit dit en passant, le logo de PHP est très révélateur de ses performances : c'est un éléphant. Pourquoi tenter de vouloir faire courir cet éléphant comme une gazelle ? Il n'y arrivera jamais.
jeudi 4 novembre 2010 à 11:47:17 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

syndrael

Je ne suis pas trop de l'avis TychoBrahe. Je fais des sites à fort trafic et en PHP ça tient.. A CONDITION de réfléchir sur l'architecture global et d'arrêter de penser que PHP n'est qu'un langage utilisé dans les garages par un étudiant qui a chopé 'PHP pour les Nuls' à la bibliothèque.
S.
jeudi 4 novembre 2010 à 11:50:24 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

neigedhiver


S++, encore une fois...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
jeudi 4 novembre 2010 à 13:28:27 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

TychoBrahe

Même en codant proprement et bien ce n'est pas ça qui vas empêcher que ton code PHP soit d'abord recompilé en bytecode puis que ce bytecode soit exécuté par PHP. Au mieux tu dois pouvoir faire en sorte de garder ton bytecode afin d'éviter d'avoir à refaire la très lourde étape de compilaton (je n'ai jamais essayé et je ne sais aps si c'est possible)... mais quand on en est à faire un maximun d'économies ça reste pas top.

Code PHP :
<?php

class Node
{
  private	$childNodes;
  private	$data;

  public function	__construct($data)
  {
    $this->data = (string)$data;
    $this->childNodes = array();
  }

  public function	display()
  {
    echo $this->data, PHP_EOL;
    foreach ($this->childNodes as $child)
      $child->display();
  }

  public function	addChild(Node $child)
  {
    $this->childNodes[] = $child;
  }

  public function	getNChild($n)
  {
    if (!is_int($n))
      throw new Exception('whatever');
    if ($n < 0 || $n >= sizeof($this->childNodes))
      throw new Exception('whatever bis');
    return $this->childNodes[$n];
  }
}

$root = new Node('Root');
$root->addChild(new Node('toto'));
$root->addChild(new Node('titi'));
$root->addChild(new Node('tutu'));
$root->getNChild(1)->addChild(new Node('plop'));
$root->display();

?>


Code C/C++ :
#include <iostream>
#include <vector>

class Node
{
private:
  std::string		_data;
  std::vector<Node>	_childNodes;
  Node() {};

public:
  Node(const std::string data) { _data += data; };
  Node(const Node &cp)
  {
    if (&cp != this)
      *this = cp;
  };
  ~Node() {};

  Node	&operator=(const Node &r)
  {
    _data = r._data;
    _childNodes = r._childNodes;
    return *this;
  };

  void	display()
  {
    std::cout << _data << std::endl;
    for (unsigned int i = 0; i < _childNodes.size(); i++)
      _childNodes[i].display();
  };

  void	addChild(const Node &child)
  {
    _childNodes.push_back(child);
  };

  void	addChild(const Node *child)
  {
    _childNodes.push_back(*child);
  };

  Node	&getNChild(unsigned int n)
  {
    if (n >= _childNodes.size())
      throw std::exception();
    return _childNodes[n];
  };
};

int
main()
{
  Node	root("Root");

  root.addChild(new Node("toto"));
  root.addChild(new Node("titi"));
  root.addChild(new Node("tutu"));
  root.getNChild(1).addChild(new Node("plop"));;
  root.display();
  return 0;
}


Code :
tycho@uraniborg-> g++ plop.cpp
tycho@uraniborg-> time ./a.out >/dev/null 

real	0m0.005s
user	0m0.000s
sys	0m0.004s
tycho@uraniborg-> time php plop.php >/dev/null 

real	0m0.103s
user	0m0.068s
sys	0m0.028s


Là ya pas photo, quand on est rendu à faire des économies de bouts de ficelle faut vraiment changer de langage, PHP c'est pas fait pour la perf.
... et encore j'ai pas mis de flags d'optimisation.

Allez on va dire que c'est peut être juste parce que PHP est un peu lourd au lancement, testons avec juste une petite boucle en plus (l'ajout du noeud "plop" effectué 1000 fois au lieux de 1 seule)
Code :
tycho@uraniborg-> g++ plop.cpp
tycho@uraniborg-> time ./a.out >/dev/null 

real	0m0.008s
user	0m0.008s
sys	0m0.000s
tycho@uraniborg-> time php plop.php >/dev/null 

real	0m0.132s
user	0m0.112s
sys	0m0.012s

Ba en fait non, même juste pour tourner PHP c'est vraiment lent...
jeudi 4 novembre 2010 à 16:32:29 | Re : Les spécifications techniques des boucles en PHP et leur ressources serveur

petitfwanz

C'est vrai je me suis peut être mal exprimé.
1 - Je parle de l'étape création @syndrael
2 - Je veux juste pouvoir privilégier une boucle par rapport à une autre pour des raisons de performances. ( Je ne parlais pas d'itérations mais je suis aussi intéressé) @COD57
3 - @SYNDRAEL tu as bossé sur des sites à fort traffic que me conseilles-tu?
4 - justement @SYNDRAEL je veux pouvoir être opérationnel sur des aspects un peu plus techniques orientés performance et optimisation de code

Exemple: J'ai travaillé sur un portail pour un client, il a été développé par pas mal de prestataires qui ne se sont pas souciés des performances et du futur de leurs applications.

Je veux éviter ça lorsque je bosse, connaitre ce qu'il faut pour ne pas me retrouver avec un code que je dois retravailler par couches en direct sur le serveur prod.

Par contre j'ai ouvert le sujet pour avoir des réponses objectives et non des critiques. Merci d'avance

1 2 3 4

Cette discussion est classée dans : php, ressources, boucles, spécifications, techniques


Répondre à ce message

Sujets en rapport avec ce message

Comment tester les fichiers PHP [ par Clem ] Comment tester les fichiers PHP sans les publier sur son site ? Dans le genre de PWS avec l'asp PWS version PHP ! [ par Clem ] J'ai trouvé un PWS en mieux, et pour le PHP !Sur http://www.easyphp.org/, il suffit de télécharger la dernière version (8Mo) et de l'installer.L'avant comment faire avec pws [ par arnaud ] voila je veux me mettre au PHP je sais que je peux faire fonctionner PWS comme server pour PHP mais je trouve rien Alors pour ceux qui sont te,nte ai Developpeur PHP rechercher. [ par Trafalio BlackHammer ] Bonjour, je recherche un bon developpeur PHP, MySQL. Veuillez me contacter a trafalio@godsoft.orgMerci statistiques ,graphique, php et mysql [ par mouss ] connaissez vous des exemples mettant en oeuvre une base de donnée mysql ,php permettant de créer des courbes, nuages de points sur une feuille html (p Extensions de PHP [ par zerg ] je sais que l'on peut ajouter des extensions en php, ses propres extensions ou celle telechargeables mais difficiles a trouver.... ==> ces extensions Mail et recup [ par H@lloWin___HiA ] SalutJe sais envoyé un mail avec un script PHP sur un serveurMais peut on envoyer un mail depuis un script qui serait ds localhost (easy php)Le proble Comment fait t-on pour executer des pages php [ par Arnaud ] merci Urgent svp !!! [ par Clem ] Comment récupérer le nom d'un fichier a partir de son adresse internet ?(Par exemple obtenir le nom dex.php a partir de http://localhost/dex.php) Démarrage sous PHP. [ par SurfSilver ] Salut à tous.JE me suis m'y cette semaine à Php dans l'espoir de concevoir une appli en base de donnée. Cet avec interet que j'essaierai de donner mes


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales