diff --git a/htdocs/telephonie/script/graph-statistiques-clients.php b/htdocs/telephonie/script/graph-statistiques-clients.php
index 7932c40fec8ceff9c4accf6d5dfe5d8db6803cd3..4a653a11f7207234ccea830d6b816b6b5dbe01a8 100644
--- a/htdocs/telephonie/script/graph-statistiques-clients.php
+++ b/htdocs/telephonie/script/graph-statistiques-clients.php
@@ -1,4 +1,4 @@
-<?PHP
+<?php
 /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -22,7 +22,6 @@
  * Generation des graphiques clients
  *
  *
- *
  */
 require ("../../master.inc.php");
 
@@ -39,98 +38,150 @@ require_once (DOL_DOCUMENT_ROOT."/telephonie/stats/graph/camoyen.class.php");
 require_once (DOL_DOCUMENT_ROOT."/telephonie/stats/graph/appelsdureemoyenne.class.php");
 require_once (DOL_DOCUMENT_ROOT."/telephonie/stats/graph/comm.nbmensuel.class.php");
 
-//require_once (DOL_DOCUMENT_ROOT."/telephonie/stats/montant.class.php");
 require_once (DOL_DOCUMENT_ROOT."/telephonie/stats/graph/camenbert.class.php");
 
-$error = 0;
-
-$img_root = DOL_DATA_ROOT."/graph/telephonie/";
-
-/***********************************************************************/
-/*
-/* Chiffre d'affaire mensuel par client
-/*
-/***********************************************************************/
-
-/*
- * Lecture des clients
- *
- */
+$childrenTotal = 10;
+$childrenNow = 0;
+$clientPerChild = 0;
 
-$sql = "SELECT s.idp as socidp, s.nom, count(l.ligne) as ligne";
-$sql .= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."telephonie_societe_ligne as l";
-$sql .= " WHERE l.fk_client_comm = s.idp ";
-$sql .= " GROUP BY s.idp";
+$sql = "SELECT max(s.idp)";
+$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
 
 if ($db->query($sql))
 {
+  $row = $db->fetch_row();
+  $clientPerChild =  ceil($row[0] / $childrenTotal);
+  $db->free();
+}
 
-  $clients = array();
-
-  $num = $db->num_rows();
-  print "$num client a traiter\n";
-  $i = 0;
-
-  while ($i < $num)
+while ( $childrenNow < $childrenTotal )
+{
+ 
+  $pid = pcntl_fork();
+  
+  if ( $pid == -1 )
     {
-      $obj = $db->fetch_object();	
-
-      $dir = $img_root . "client/".substr($obj->socidp,0,1)."/".$obj->socidp."/";
-
-      $clients[$i] = $obj->socidp;
-
-      $i++;
+      die( "error\n" );
     }
+  elseif ( $pid == 0 )
+    {
+      $childrenNow++;
+    }
+  else
+    {
+      $process = new Process( $childrenNow, $clientPerChild );
+      $process->go();
+      die();
+    }  
 }
 
-$sql = "DELETE FROM ".MAIN_DB_PREFIX."telephonie_client_stats";
-$db->query($sql);
+/*
+ * Process
+ *
+ */
 
-foreach ($clients as $client)
+class Process
 {
-  print ".";
-
+  var $ident;
   
-  $file = $img_root . "client/".substr($client,0,1)."/".$client."/graphca.png";
-  $graphca = new GraphCa($db, $file);
-  $graphca->client = $client;
-  $graphca->GraphDraw();
+  function Process( $ident , $cpc)
+  {
+    $this->ident = $ident;
+    $this->cpc = $cpc;
+    $this->db = new DoliDb('','','','','',1);
+  }
   
+  function go()
+  {
+    dolibarr_syslog("Debut client ".$this->ident);
+    $error = 0;
+
+    $img_root = DOL_DATA_ROOT."/graph/telephonie/";
+ 
+    $min = $this->ident * $this->cpc;
+    $max = ($this->ident + 1 ) * $this->cpc;
+
+    /*
+     * Lecture des clients
+     *
+     */
+    $sql = "SELECT s.idp as socidp, s.nom, count(l.ligne) as ligne";
+    $sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
+    $sql .= ",".MAIN_DB_PREFIX."telephonie_societe_ligne as l";
+    $sql .= " WHERE l.fk_client_comm = s.idp ";
+    $sql .= " AND s.idp >= ".$min;
+    $sql .= " AND s.idp < ".$max;
+    $sql .= " GROUP BY s.idp";
+    
+    if ($this->db->query($sql))
+      {
+	$clients = array();
+	
+	$num = $this->db->num_rows();
+	print "$this->ident : $num client a traiter ($min - $max)\n";
+	$i = 0;
+	
+	while ($i < $num)
+	  {
+	    $obj = $this->db->fetch_object();	
+	    
+	    $dir = $img_root . "client/".substr($obj->socidp,0,1)."/".$obj->socidp."/";
+	    
+	    $clients[$i] = $obj->socidp;
+	    
+	    $i++;
+	  }
+      }
+
+    if (sizeof($clients))
+      {
+	foreach ($clients as $client)
+	  {
+	    //print ".";	
+	    
+	    $file = $img_root . "client/".substr($client,0,1)."/".$client."/graphca.png";
+	    $graphca = new GraphCa($this->db, $file);
+	    $graphca->client = $client;
+	    $graphca->GraphDraw();
 
   $file = $img_root . "client/".substr($client,0,1)."/".$client."/graphgain.png";
-  $file = "/dev/null";
-  $graphgain = new GraphGain ($db, $file);
-  $graphgain->client = $client;
-  $graphgain->show_console = 0 ;
-  $graphgain->GraphDraw();
-
-  if ($graphgain->total_cout > 0)
-    {
-      $marge = ( $graphgain->total_gain / $graphgain->total_cout * 100);
-    }
-
-  $sql = "INSERT INTO ".MAIN_DB_PREFIX."telephonie_client_stats (fk_client_comm, gain, ca, cout, marge)";
-  $sql .= " VALUES (".$client.",'".ereg_replace(",",".",$graphgain->total_gain)."'";
-  $sql .= ",'".ereg_replace(",",".",$graphgain->total_ca)."'";
-  $sql .= ",'".ereg_replace(",",".",$graphgain->total_cout)."'";
-  $sql .= ",'".ereg_replace(",",".",$marge)."')";
-  $db->query($sql);
-
-  
-  $file = $img_root . "client/".substr($client,0,1)."/".$client."/graphappelsdureemoyenne.png";
-
-  $graphgain = new GraphAppelsDureeMoyenne ($db, $file);
-  $graphgain->client = $client;
-  $graphgain->show_console = 0 ;
-  $graphgain->GraphDraw();
-
-  $file = $img_root . "client/".substr($client,0,1)."/".$client."/nb-comm-mensuel.png";
-
-  $graphx = new GraphCommNbMensuel ($db, $file);
-  $graphx->client = $client;
-  $graphx->show_console = 0 ;
-  $graphx->Graph();
 
+	    $graphgain = new GraphGain ($this->db, $file);
+	    $graphgain->client = $client;
+	    $graphgain->show_console = 0 ;
+	    $graphgain->GraphDraw();
+
+	    if ($graphgain->total_cout > 0)
+	      {
+		$marge = ( $graphgain->total_gain / $graphgain->total_cout * 100);
+	      }
+	    
+	    $sql = "INSERT INTO ".MAIN_DB_PREFIX."telephonie_client_stats (fk_client_comm, gain, ca, cout, marge)";
+	    $sql .= " VALUES (".$client.",'".ereg_replace(",",".",$graphgain->total_gain)."'";
+	    $sql .= ",'".ereg_replace(",",".",$graphgain->total_ca)."'";
+	    $sql .= ",'".ereg_replace(",",".",$graphgain->total_cout)."'";
+	    $sql .= ",'".ereg_replace(",",".",$marge)."')";
+	    $this->db->query($sql);
+
+
+	    $file = $img_root . "client/".substr($client,0,1)."/".$client."/graphappelsdureemoyenne.png";
+	    
+	    $graphgain = new GraphAppelsDureeMoyenne ($this->db, $file);
+	    $graphgain->client = $client;
+	    $graphgain->show_console = 0 ;
+	    $graphgain->GraphDraw();
+	    
+	    $file = $img_root . "client/".substr($client,0,1)."/".$client."/nb-comm-mensuel.png";
+	    
+	    $graphx = new GraphCommNbMensuel ($this->db, $file);
+	    $graphx->client = $client;
+	    $graphx->show_console = 0 ;
+	    $graphx->Graph();
+
+	  }       
+      }
+    dolibarr_syslog("Fin client ".$this->ident);
+
+  }
 }
-print "\n";
 ?>