82
lundi 23 juin 2003 Rapport de Stage : Application de suivi de fax Page 1 sur 82 Jonathan WEISBERG Jonathan WEISBERG Rapport de stage : Application de suivi de fax janvier à mars 2003 Ecole : Ecole Supérieure de Génie Informatique Maître de stage : Frédéric SANANES 28, rue du Plateau 75019 Paris Tél. : 01 42 41 24 24 Fax : 01 42 38 14 39 Entreprise : RCI Banque Tuteur de stage : Tanguy DADE 14, rue du Pavé Neuf 93168 Noisy Le Grand Cedex Tél. : 01 42 39 80 00

Application de suivi de fax - jonathan.weisberg.free.frjonathan.weisberg.free.fr/2003-01 - rapport de stage Diac - topcall...lundi 23 juin 2003 Rapport de Stage : Application de suivi

Embed Size (px)

Citation preview

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 1 sur 82 Jonathan WEISBERG

    Jonathan WEISBERG

    Rapport de stage :

    Application de suivi de fax janvier mars 2003

    Ecole :

    Ecole Suprieure de Gnie Informatique Matre de stage

    : Frdric SANANES 28, rue du Plateau 75019 Paris Tl. : 01 42 41 24 24 Fax : 01 42 38 14 39

    Entreprise :

    RCI Banque Tuteur de stage

    : Tanguy DADE 14, rue du Pav Neuf 93168 Noisy Le Grand Cedex Tl. : 01 42 39 80 00

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 2 sur 82 Jonathan WEISBERG

    SOMMAIRE

    1 RCI Banque, acteur majeur de la branche financire Renault............................................3 1.1 Rapport annuel 2001...................................................................................................3 1.2 Rsultats 2001.............................................................................................................5 1.3 Le service rseaux production dans RCI Banque France ...........................................6

    2 Les serveurs TOPCALL .....................................................................................................8 3 Cahier des charges - version 1 - Application de suivi de fax ...........................................10

    3.1 Statistiques horaires la demande ..............................................................10 3.2 Statistiques temps rel ....................................................................................10 3.3 Statistiques personnalises la demande ..................................................11 3.4 Statistiques semaines et mois ........................................................................11 3.5 Recherches selon plusieurs critres ............................................................11 3.6 Point respects : ............................................................................................11

    4 Cahier des charges - version 2 - Application de suivi de fax ...........................................12 4.1 Statistiques personnalises ............................................................................12 4.2 Statistiques temps rel ....................................................................................12 4.3 Statistiques semaines et mois ........................................................................12 4.4 Recherches selon plusieurs critres ............................................................13 4.5 Point respects : ............................................................................................13

    5 Lexistant refaire............................................................................................................14 6 Application de suivi de fax...............................................................................................18

    5.1. Le langage de programmation : PHP........................................................................18 6.1 Installation et Configuration (Windows 2000 - IIS 5.0)...........................................20 6.2 Test et Affichage ......................................................................................................23 6.3 Connexion la base de donnes MS SQL Server ....................................................24 6.4 Affichage dun graphe comme image ......................................................................25 6.5 Lapplication de statistiques temps rels ..................................................................27

    6.5.1 Statistiques personnalises ...............................................................................36 6.5.2 Statistiques temps rels.....................................................................................50 6.5.3 Statistiques mensuelles .....................................................................................57 6.5.4 Recherche de fax dans la base de donnes .......................................................61

    7 Bibliographie ....................................................................................................................63 ANNEXE A fonctions graphiques ........................................................................................64 ANNEXE B "index.php" .......................................................................................................66 ANNEXE C "script.js" ..........................................................................................................68 ANNEXE D "graphe.php".....................................................................................................72 ANNEXE E "stats_num.php"................................................................................................80 8 Travaux effectus en plus .................................................................................................81 9 Mon CV ............................................................................................................................82

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 3 sur 82 Jonathan WEISBERG

    1 RCI Banque, acteur majeur de la branche financire Renault

    RCI Banque, qui est dtenue 100 % par la Compagnie Financire Renault, appartient la Branche Financire du Groupe Renault. Le groupe RCI Banque constitue un lment essentiel du dispositif commercial de Renault. La Compagnie Financire Renault est un holding contrlant une soixantaine de socits qui concourent au dveloppement du Groupe dans les domaines suivants :

    le financement des ventes des marques du Groupe, notamment en Europe et en Amrique du Sud, par lintermdiaire du groupe RCI Banque ; la gestion de la trsorerie et des risques financiers travers la Socit Financire et Foncire et Renault Finance ; le financement dinvestissements financiers.

    La Branche Financire constitue un centre de profit et de stabilit financire essentiel pour le Groupe Renault. La Compagnie Financire Renault a dgag en 2001 un rsultat net de 257 millions deuros, portant ses capitaux propres 2,25 milliards deuros.

    1.1 Rapport annuel 2001

    La marque Renault a confirm pour la quatrime anne conscutive sa position de leader en Europe, avec une part de march vhicules particuliers et vhicules utilitaires (VP + VU) lgrement suprieure celle de 2000, en particulier grce au succs des modles lancs en 2001 (Laguna et Clio) et de ses vhicules utilitaires. Au global, les ventes VP + VU du Groupe ont progress de 2,3 % dans le monde, dont 4,7 % hors Europe occidentale (504 800 units vendues).

    RCI Banque, financire du Groupe, a particip cette stratgie de croissance. Lanne 2001 a t celle de la confirmation de la stratgie de RCI Banque, centre autour des deux fondamentaux cls : intgration et comptitivit.

    Intgration interne, en dbut danne, avec la fusion juridique des filiales de financement des ventes europennes de Nissan et de RCI Banque. Les deux activits sont dsormais gres au sein dune mme entit, tout en conservant leur identit sous deux marques diffrentes. Les deux activits restent spares en Grande-Bretagne en raison du partenariat historique avec Halifax - Bank of Scotland sur les financements Renault. Le financement des produits Nissan est galement assur en Argentine, au Brsil, en France et en Suisse.

    Intgration avec le Constructeur qui nous a permis de dvelopper ou de mettre en place sur le segment Grand Public, dans lensemble de nos filiales, des offres susceptibles de conqurir de nouveaux clients la marque et, demain, de les fidliser (New Deal en France et Renault Selections en Grande-Bretagne) et dacclrer le renouvellement du vhicule. La part des produits fidlisants reprsente aujourdhui environ 28 % de lactivit Grand Public.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 4 sur 82 Jonathan WEISBERG

    En outre, dans le domaine des entreprises, ils ont augment le parc, qui stablit, fin 2001, 278 000 vhicules. Le rapprochement des structures commerciales avec le Constructeur leurs a donn lopportunit, particulirement en France, de les dvelopper sur le secteur des petites et moyennes entreprises.

    Cette stratgie sest traduite par une performance commerciale confirmant la justesse du positionnement du groupe vis--vis de lvolution du comportement des clients. Le taux de pntration atteint 31,5 %. Le groupe RCI Banque a financ 995 000 dossiers lanne 2001 pour un encours fin 2001 dpassant le seuil de 18 milliards deuros. Cest galement dans ce cadre que nous accompagnons le Constructeur dans sa politique de rorganisation du rseau.

    Par son expertise, son assistance et ses diagnostics financiers, RCI Banque dmontre une nouvelle fois son rle essentiel dans le dispositif de distribution du Constructeur. Les encours moyens de financement des rseaux slvent 4,4 milliards deuros. Sur le plan international, ils ont poursuivi la recherche de partenariats efficaces pour la mise en place de solutions de financement adaptes en Hongrie, au Mexique et en Roumanie. Cette stratgie de RCI Banque saccompagne dune recherche permanente de comptitivit et de lamlioration de nos performances.

    Dans ce cadre, la rorganisation du rseau commercial en France a t mene terme, renforant ainsi son efficacit sur le terrain et rpondant aux attentes du rseau. Paralllement, ils ont stabilis les frais de fonctionnement, matris les cots de distribution et contrl le cot du risque, tout en amliorant la qualit de service. La stratgie, pour tre efficace, doit saccompagner dune politique de management soutenue et adapte.

    Cest dans ce cadre quils ont lanc deux projets dimportance : la gestion prvisionnelle des comptences, dploye dans un premier temps en France, afin danticiper au mieux les volutions du march, et le programme damlioration des processus Value Up.

    En 2002, ils poursuivent le dploiement de leur stratgie tout en maintenant des efforts en matire de comptitivit et de qualit de service, dans un contexte politique et conomique mondial difficile. L'anne 2002 a dbut avec le changement effectif du nom de Renault Crdit International S.A. Banque en RCI Banque.

    Dclin au sein de lensemble des entits, le nouveau nom renforcera le sentiment dappartenance au mme groupe, et permettra dtre prsent dans lAlliance avec une appellation unique.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 5 sur 82 Jonathan WEISBERG

    1.2 Rsultats 2001

    Le rsultat consolid avant impt du groupe RCI Banque s'lve 251 millions deuros, aprs dotation aux amortissements de l'cart d'acquisition des filiales de financement des ventes Nissan de 3,1 millions deuros. Ce rsultat est en hausse de 2,8 % par rapport lanne prcdente (244 millions deuros). Il tient compte d'une charge de 3,9 millions deuros lie la restructuration de RCI Allemagne : en effet, lanne 2001 a t marque par la fusion juridique et la mise en commun des structures de financement Renault et Nissan. Le dmnagement dans un mme btiment a t finalis fin 2001. Le rsultat net consolid atteint 149 millions deuros en 2001, en hausse de 5,7 % par rapport 2000 (141 millions deuros). Il reprsente une rentabilit nette des capitaux propres de 11,83 %1 (12,01 % hors lments non rcurrents), contre 12,36 % en 2000.

    1 Le ROE est le rapport du rsultat net consolid aux capitaux propres comptables moyens de lexercice (moyenne arithmtique sur 12 mois) avant pris en compte du rsultat de lexercice courant.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 6 sur 82 Jonathan WEISBERG

    1.3 Le service rseaux production dans RCI Banque France

    Le service rseaux production, dans lequel jai effectu mon stage, soccupe de maintenir et de faire voluer lensemble de larchitecture rseau du groupe RCI Banque, dun point de vue mondial. Il soccupe surtout du rsau Ile de France, et des interconnexions entre les filiales europennes et mondiales. Leur quipement et constitu uniquement de matriel CISCO, leurs serveurs sont sur des machines MainFrame, UNIX et Windows.

    Pendant mon stage, jai pu suivre de prt lvolution dun projet dinvergure mondial. Il sagit de remplacer toutes les machines clientes, par des PC fonctionnant sous Windows XP Professionnel, et un certain nombre de serveurs NT 4 ou Novell, par Windows 2000 Advanced Server. Les avantages sont long terme la maintenance du parc informatique qui en sera nettement diminue, sachant que la commande des PC sous Windows XP comptabilise plus de 10 000 machines ! Le projet se droule sur un an. Au moment de mon arrive chez RCI Banque, le projet venait de dbuter. Outre le projet de mettre en place une application de statistique temps rel sur des serveurs de fax ; jai galement contribu la mise en place de ce projet, dun point de vue rseau (cf. Travaux effectus en plus).

    Ci-aprs larchitecture rseaux de RCI Banque :

    Le rseau Intranet RCI Banque mondial :

    Indra

    RCIEspagneMadrid Renault

    SuisseUrdof

    RCIGeneve

    RCIWatford

    RenaultPays Bas

    Schipol

    RCIWoerden

    Cable & WirelessRseau ADN

    Accs filliales

    MLV

    MN I MN II

    C2 - RCI

    MontreuilSt Cloud

    Lyon

    Bordeaux

    Nancy

    Marseille

    RennesLille

    C2 - RenaultCofinoga

    2 MO

    2 MO

    34 MO

    2 MO

    2 MO

    Interlan 1GOInterlan 1GO

    2 MO

    2 MO

    155 MO

    155 MO

    Intranet RCI Banque

    128 KO

    128 KO

    128 KO

    128 KO

    RenaultBelgique

    Drogenbos

    RCIBruxelles

    RCIAllemagne

    Neuss

    Renault GBMaple Cross

    RCIRegensdorf

    Renault/RCIPologne

    Renault/RCIAutriche

    Renault/RCIItalie

    RenaultPortugal

    RCILisbonne

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 7 sur 82 Jonathan WEISBERG

    Le rseau Intranet RCI Banque franais :

    Lan Renault

    Bordeaux

    Lyon

    2Mb RNIS

    RNIS

    172.

    25.7

    2.13

    0

    172.

    25.7

    2.12

    9

    172.

    23.1

    23.2

    52

    172.

    23.1

    23.2

    53

    172.

    23.1

    23.2

    53

    172.

    23.1

    23.2

    52

    Vlan 10

    Vlan 110Vlan 10

    Mo

    ntr

    euil

    St

    Clo

    ud

    Vlan 10

    RCI

    RCI/RFI

    172.

    23.1

    1.60

    172.

    23.1

    1.30

    172.

    23.1

    1.6

    FRSCRT12

    FRSCRT11

    172.

    23.1

    1.10

    217

    2.23

    .11.

    14

    FRMORT02

    FRMORT01

    FRNGRT11FRNGRT13

    FRC2RT02FRC2RT03

    FRNGRT02/Carte MSM

    ST CLOUD

    MLV

    C2

    Montreuil

    Double TriangleMLV/C2/ST Cloud/Montreuil

    172.23.4.0 / 255.255.252.0 Gateway HSRP : 172.23.7.252172.23.1.0 / 255.255.255.0 Gateway HSRP : 172.23.1.254172.23.3.0 / 255.255.255.0 Gateway HSRP : 172.23.3.254172.23.8.0 / 255.255.255.0 Gateway HSRP : 172.23.8.254172.23.9.0 / 255.255.255.0 Gateway HSRP : 172.23.9.254

    172.23.20.0 / 255.255.255.0 Gateway HSRP : 172.23.20.254172.23.21.0 / 255.255.255.0 Gateway HSRP : 172.23.21.254

    RCI : 172.23.2.0 / 255.255.255.0 - Gateway HSRP : 172.23.2.254

    172.

    23.1

    14.0

    / 25

    5.25

    5.25

    4.0

    - G

    atew

    ay H

    SR

    P :

    172.

    23.1

    15.2

    54

    172.

    23.1

    6.0

    / 255

    .255

    .255

    .0 -

    Gat

    eway

    HS

    RP

    : 17

    2.23

    .16.

    254

    172.

    23.1

    7.0

    / 255

    .255

    .255

    .0 -

    Gat

    eway

    HS

    RP

    : 17

    2.23

    .17.

    254

    172.

    23.1

    9.0

    / 255

    .255

    .255

    .0 -

    Gat

    eway

    HS

    RP

    : 17

    2.23

    .19.

    254

    Anneau jeton

    Anneau jeton

    172.23.112.16 / 255.255.255.240

    193.

    57.9

    2.0

    / 255

    .255

    .255

    .240

    Gat

    eway

    HS

    RP

    : 19

    3.57

    .92.

    1

    172.23.112.22

    172.23.11.29

    172.23.11.101

    172.23.11.5

    172.23.11.1317

    2.23

    .115

    .240

    172.

    23.1

    15.2

    41

    172.23.16.208172.23.17.251172.23.19.242

    193.

    57.9

    2.3

    193.

    57.9

    2.2

    172.23.16.230172.23.17.250172.23.19.241

    FRNGRT01/Carte MSFC2

    RENAULT :172.25.72.128 / 255.255.255.240 - Gateway HSRP 172.25.72.134RFI :172.23.11.64 / 255.255.255.224 - Gateway HSRP : 172.23.11.90

    FRNGRT11/Carte MSFC2

    FRNGRT12/Carte MSFC2

    Catalyst 6006Catalyst 6506

    Catalyst 6509 Catalyst 6009

    172.

    23.1

    1.17

    8

    172.23.11.186

    172.

    23.1

    1.18

    7172.23.11.179

    172.

    23.1

    1.17

    172.

    23.1

    1.18

    172.

    23.1

    1.58

    172.23.11.26

    172.

    25.7

    2.13

    2

    172.

    25.7

    2.13

    3

    MainframeIBM

    ServeursUnix

    ServeursWindows

    ServeursUnix

    ServeursWindows

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 8 sur 82 Jonathan WEISBERG

    2 Les serveurs TOPCALL

    Les serveurs TopCall grent un grand nombre de fax ; jai ralis un script permettant de compter le nombre fax entrants/sortants sur un jour, un mois et un an (cf ANNEXE E) :

    De ce constat, on se rencontre clairement, limportance des serveurs TopCall et de

    lapplication, que je dois dvelopper, dun point de vue outil de diagnostique.

    La partie du script php permettant de compter le nombre de fax : $sql = "SELECT t.ID_Action FROM TCReport.dbo.Action_Table t

    WHERE upper(t.MsgClass_Recipient) = 'FAX' AND t.Time_Action between '$time1' and '$time2'";

    $result_id = MSSQL_QUERY($sql,$db) OR DIE('Erreur SQL:'.$sql.''.mssql_get_last_message()); $res = MSSQL_NUM_ROWS($result_id); //compte le nombre de ligne rsultant de la requete

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 9 sur 82 Jonathan WEISBERG

    Principe de fonctionnement :

    Le serveur Topcall reoit un mail de lentreprise ayant comme destinataire un numro de tlphone, le fax est convertit pour Topcall comme "FAX,0numrodetlphone" ou "FAX#0numrodetlphone,,SMTP" :

    Le serveur rcupre le mail et la pice jointe, quil ouvre et la convertit en ".tiff". La pice jointe est de type ".doc", ".xls", ".ppt", ".pdf", ".tiff" ou ".jpg". Si le serveur ne peut ouvrir la pice jointe, un message derreur est retourn lexpditeur. Sinon, le serveur envoie le document au destinataire en utilisant une des 60 lignes de fax.

    Le serveur Topcall reoit un fax pour lentreprise ayant comment destinataire le numro de tlphone dune des personnes de la socit, le serveur fait la relation entre le numro et ladresse e-mail du destinataire, le fax est donc convertit comme : "SMTP4,[email protected] " :

    Le serveur reoit le document du destinataire en utilisant un des 60 lignes de fax Le serveur rcupre le fax et le convertit en ".tiff". Le serveur fait la relation entre le numro de poste et ladresse e-mail Le serveur envoie le mail la personne concerne.

    Lapplication "TopCall for Windows", fournit avec les serveurs TopCall :

    Cette application ne donne que des donnes numriques, ce qui nest pas trs reprsentatif. On prfrera utiliser ces donnes pour en faire un affichage sous forme de graphe. De plus lapplication est nest pas facile prendre en main, et est donc difficile utiliser. Do lobjet de mon stage, faire une adaptation de lapplication "TopCall for Windows", sous forme de graphes.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 10 sur 82 Jonathan WEISBERG

    3 Cahier des charges - version 1 - Application de suivi de fax

    Lapplication intranet raliser pour but de substituer le logiciel de consultation de le base de donnes des serveurs de fax. Lapplication "Topcall for Windows" est fournit avec les serveurs de fax Topcall, et permet de voir le statut des fax en attente, entrants et sortants. Mais cette application est trs complique utiliser et fournit en grand nombre dinformations "inutiles". Sachant que les donnes ncessaires au quotidien sont trs limites : type de fax (entrant/sortant), metteur/rcepteur, heure dmission/rception, temps dattente sur le serveur (dure entre le moment o le fax est reu et mis), le code erreur. Cette application affiche les donnes en brut (numrique) et non pas sous forme graphique, ce qui est plus difficile comprendre et analyser, en cas de problme.

    Mon tuteur de stage avait dj ralis une partie de lapplication, non temps rels, mais celle-ci permettais dextraire les donnes ncessaires dans un fichier texte, puis de les afficher laide dExcel.

    Lobjectif de mon stage est donc de refaire entirement cette application, mais quelle soit temps rels, plus prcise, paramtrable, complte, simple et efficace.

    Voici le cahier des charges tel quil a t propos :

    Programmation d'une application intranet de suivi temps rel du flux gnr par les serveurs de fax Topcall.

    Les fonctions demandes sont :

    3.1 Statistiques horaires la demande

    Cette section devra afficher des statistiques sous forme graphique refltant l'tat du trafique fax en cours. Les graphes demands sont :

    Rpartition du nombre de fax entrants sur la dernire heure. Rpartition du nombre de fax sortants sur la dernire heure. Rpartition du nombre de lignes utilises en mme temps sur la dernire heure. Rpartition de l'utilisation des lignes sur la dernire heure en entrant/sortant. Soit combien de fax ont t mis/reus par chaque ligne. Rpartition du temps de rponse sur la dernire heure. Soit le temps entre la rception de la demande d'envoi et la fin effective de l'envoi.

    3.2 Statistiques temps rel

    Cette section devra renvoyer l'tat de fonctionnement (positif ou ngatif) de certains critres refltant le fonctionnement de l'architecture Topcall. Selon ces critres, un compteur devra tre affich. Les tats demands sont :

    Nombre de fax envoys sur les dernire 10mn. Aucun fax mis reprsentant l'tat ngatif de fonctionnement. Irrgularit de l'utilisation des lignes disposition. Permet de surveiller le fonctionnement des lignes.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 11 sur 82 Jonathan WEISBERG

    3.3 Statistiques personnalises la demande

    Cette section devra permettre aux utilisateurs d'obtenir un graphique sur une priode donne. Les graphes proposs seront les mmes que pour la section 1/.

    3.4 Statistiques semaines et mois

    Cette section ddie permettra d'avoir des statistiques longs termes sur la dernire semaine mais aussi les derniers mois. Ces statistiques sont axes clients et non plus surveillance. Elles devront tre gnres l'avance de faon priodique et non pas la demande. Les graphes proposs seront les mmes que pour la section 1/.

    3.5 Recherches selon plusieurs critres

    Cette section doit permettre de retrouver un ou plusieurs enregistrements dans la base de donnes en prcisant plusieurs critres de recherche. Cet outil doit permettre de se substituer "Topcall for Windows".

    3.6 Point respects :

    Plusieurs points devront tre respects pour le dveloppement de cette application :

    Une analyse conceptuelle devra tre fournie afin de valider le cahier des charges. Documentation : Afin de permettre le suivi de l'exploitation des l'application par la DIAC aprs le dpart du stagiaire, une documentation technique devra tre fournie. Simplicit d'utilisation : Cet outils ne doit pas ncessit de formation pour son utilisation. Simplicit d'installation : Il est important que cette application soit aisment re-installable sur une autre machine et que les informations voues tre changes soit non pas dans l'excutable mais dans un fichier d'initialisation ou base de registre.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 12 sur 82 Jonathan WEISBERG

    4 Cahier des charges - version 2 - Application de suivi de fax

    Voici les modifications apportes aprs diffrentes propositions et ngociations avec mon tuteur de stage, Tanguy DADE :

    Programmation d'une application intranet de suivi temps rel du flux gnr par les serveurs de fax Topcall.

    Les fonctions demandes sont :

    4.1 Statistiques personnalises

    Cette section devra afficher des statistiques sous forme graphique refltant l'tat du trafique fax en cours. Le type de graphe sera obtenu par des cases cocher. La base de temps sera dfinie en heure (par dfaut une heure), ou en minutes (par dfaut 10 minutes), ou en tranche (date et heures paramtrables, avec une tranche dune heure par dfaut). Tous ces temps daffichages sont dcompter de lheure actuelle, sauf pour la tranche. Les graphes demands sont :

    Rpartition du nombre de fax entrants sur la dernire heure. Rpartition du nombre de fax sortants sur la dernire heure. Rpartition du nombre de lignes utilises en mme temps sur la dernire heure. Rpartition de l'utilisation maximum des lignes sur la dernire heure en entrant/sortant. Soit combien de fax ont t mis/reus pour chaque ligne. Rpartition du temps de rponse. Soit le temps entre la rception de la demande d'envoi et la fin effective de l'envoi dun fax.

    4.2 Statistiques temps rel

    Cette section devra renvoyer l'tat de fonctionnement (positif ou ngatif) de certains critres refltant le fonctionnement de l'architecture Topcall. Selon ces critres, un compteur devra tre affich. Les tats demands sont :

    Nombre de fax envoys sur les dernires 10 minutes. Aucun fax mis reprsentant l'tat ngatif de fonctionnement. Irrgularit de l'utilisation des lignes disposition. Permet de surveiller le fonctionnement des lignes.

    4.3 Statistiques semaines et mois

    Cette section ddie permettra d'avoir des statistiques longs termes sur la dernire semaine mais aussi les derniers mois. Ces statistiques sont axes clients et non plus surveillance. Elles devront tre gnres l'avance de faon priodique et non pas la demande. Les graphes proposs seront les mmes que pour la section 1/.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 13 sur 82 Jonathan WEISBERG

    4.4 Recherches selon plusieurs critres

    Cette section doit permettre de retrouver un ou plusieurs enregistrements dans la base de donnes en prcisant plusieurs critres de recherche. Cet outil doit permettre de se substituer "Topcall for Windows".

    4.5 Point respects :

    Plusieurs points devront tre respects pour le dveloppement de cette application :

    Une analyse conceptuelle devra tre fournie afin de valider le cahier des charges. Documentation : Afin de permettre le suivi de l'exploitation des l'application par la DIAC aprs le dpart du stagiaire, une documentation technique devra tre fournie. Simplicit d'utilisation : Cet outils ne doit pas ncessit de formation pour son utilisation. Simplicit d'installation : Il est important que cette application soit aisment re-installable sur une autre machine et que les informations voues tre changes soit non pas dans l'excutable mais dans un fichier d'initialisation ou base de registre.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 14 sur 82 Jonathan WEISBERG

    5 Lexistant refaire

    Voici des copies dcran de lexistant refaire. Page daccueil :

    Rpartition de l'utilisation des lignes sur la dernire heure :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 15 sur 82 Jonathan WEISBERG

    Nombre maximum de lignes utilises sur la dernire heure (30 s de calcul) :

    Nombre de fax envoys sur la dernire heure :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 16 sur 82 Jonathan WEISBERG

    Nombre de fax reus sur la dernire heure :

    Temps de rponse fax sortants sur la dernire heure :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 17 sur 82 Jonathan WEISBERG

    Documentation - Interprtation des graphes : Cette partie ne sera pas afficher, car elle explique comment lire les graphes.

    Procdure SVP pour le TopCall : Contient les donnes ncessaires la maintenance des serveurs Topcall.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 18 sur 82 Jonathan WEISBERG

    6 Application de suivi de fax

    Objectifs : Ralisation dune application web pour lIntranet du Groupe Renault Crdit International. Topcall contient sa propre base de donnes et son logiciel dexploitation de cette base. Mais ce logiciel est compliqu dutilisation et peu reprsentatif car il naffiche que des donnes numriques et non graphique. Pour pouvoir exploiter cette base RCI Banque a demand la socit propritaire, de leur fournir une base de donnes exploitable, ainsi elle a install pour les serveurs Topcall un agent MS SQL Server, qui se charge de copier sur celle-ci, en temps rel, les donnes de la base Topcall. De ce fait lapplication que je dois raliser doit "substituer" lutilisation du logiciel "Topcall for Windows". Son but est de rcuprer les donnes ncessaires laffichage des graphes demands dans le cahier des charges. Le choix du langage de programmation est arbitraire ! Celui de php lest moins, car ce dernier est Open Source, et il est gratuit. Il est donc plus simple dutilisation pour une socit, dun point de vue licence.

    5.1. Le langage de programmation : PHP

    PHP, un langage de script pour les serveurs web. Un langage simple derrire lequel ne se cache encore aucun des grands acteurs conomiques de l'internet. C'est un logiciel Open Source. Une socit - Zend - commercialise des utilitaires (compilateurs, environnement de dveloppement) pour assurer la viabilit technique et commerciale de PHP, et en faire un standard pour le dveloppement de sites web dynamiques. C'est le mme modle conomique que Linux et beaucoup de logiciels Open Source.

    http://www.php.net/

    http://www.zend.com/

    PHP sert avant tout obtenir des sites Web dynamiques. Techniquement, PHP tient la comparaison avec ses concurrents : ASP, ColdFusion, Perl ou Java Server Pages. Etant en Open Source PHP est devenu un standard du dveloppement web.

    http://www.php.net/http://www.zend.com/

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 19 sur 82 Jonathan WEISBERG

    Principe de fonctionnement :

    Il faut savoir que lorsque vous tapez une URL (adresse de site internet) depuis votre navigateur (appel client) vous demandez en fait un serveur (un logiciel tournant gnralement sur une machine distante) de vous retourner une page. S'il s'agit d'un page HTML alors cette page sera retourne telle quelle (telle qu'elle a t crite par le "programmeur" ou "designer" ). Dans le cas d'une page PHP, cela est un peu plus complexe. Comme l'explique le schma suivant:

    Une fois une page HTML ou PHP appele, elle passe par le serveur Web (ici Apache). Si l'extension du fichier correspond ce que l'on a dfini comme tant l'extension PHP (gnralement .php3, .php ...), le serveur demande l'interprteur PHP d'excuter le code PHP contenu dans le fichier (ce qui gnralement ajoutera du code HTML la page). L'excution de ce code PHP entranera ventuellement un change d'informations avec la base de donnes (ou d'autres systmes). Au final, c'est une page HTML (gnralement) qui est renvoy Apache (avec ventuellement du Javascript, des appels des applets... enfin tout ce que les navigateurs peuvent comprendre). Le rsultat est mis vers le navigateur.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 20 sur 82 Jonathan WEISBERG

    6.1 Installation et Configuration (Windows 2000 - IIS 5.0)

    NB : Cette partie a t remies comme notice dinstallation et de configuration.

    Copier le rpertoire "topcall" du CD-Rom, vers "C:\".

    Tlchargements :

    PHP 4.3.0 zip package [5,811Kb] - 27 December 2002 (CGI binary plus server API versions for Apache, Apache2 (experimental), ISAPI, NSAPI, Servlet and Pi3Web. MySQL support built-in, many extensions included, packaged as zip) :

    http://www.php.net/get_download.php?df=php-4.3.0-installer.exe

    PHP 4.3.0 installer [1,028Kb] - 27 December 2002 (CGI only, MySQL support built-in, packaged as Windows installer to install and configure PHP, and automatically configure IIS, PWS and Xitami, with manual configuration for other servers. N.B. no external extensions included) :

    http://www.php.net/get_download.php?df=php-4.3.0-Win32.zip

    Installation et Configuration IIS 5.0 :

    Insrer le CD dinstallation de Windows 2000. Cliquer sur le bouton Dmarrer, Paramtres, Panneau de configuration, Ajout/Suppression de programmes, Ajouter/Supprimer des composants Windows. Cocher : Service Internet (IIS), puis cliquer sur Suivant, Terminer.

    Clique bouton droit de la souris sur le Poste de travail, puis clique bouton de gauche sur Grer, puis dans la fentre ouverte cliquer sur Service Internet (IIS), comme ci-dessous :

    http://www.php.net/get_download.php?df=php-4.3.0-installer.exehttp://www.php.net/get_download.php?df=php-4.3.0-Win32.zip

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 21 sur 82 Jonathan WEISBERG

    Clique bouton droit de la souris Site Web par dfaut, puis clique bouton de gauche de la souris sur Proprits, puis slectionner longlet Documents, puis cliquer sur le bouton Ajouter, et saisir "index.php", ce qui donne :

    Cliquer sur le bouton OK, pour valider les modifications.

    Clique bouton droit de la souris sur Site Web par dfaut, Nouveau, Rpertoire Virtuel.

    Cliquer sur Suivant, saisir "topcall", puis Suivant, saisir "C:\topcall", puis 2 fois Suivant, puis Terminer.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 22 sur 82 Jonathan WEISBERG

    Installation et Configuration PHP :

    Lancer linstallation de php partir de : "php-4.3.0-installer.exe" et suivre les instructions, laisser toutes les options par dfaut. Ouvrir le fichier "php-4.3.0-Win32.zip", avec WinZip tlchargeable : http://download.winzip.com/wz81fr.exe, et faire un cliquer/dplacer du rpertoire "extensions" vers "C:\PHP\".

    Ouvrir le fichier "php.ini", dans le dossier "C:\WINNT\", et dans ce fichier : Rechercher la ligne "cgi.force_redirect = 1" et la modifier pour lobtenir avec le " ; " devant : " ;cgi.force_redirect = 1", rajouter "cgi.force_redirect = 0". Rechercher la ligne "extension_dir = " et la modifier pour lobtenir sans le " ; " : "extension_dir =C:\PHP\extensions". Rechercher la ligne ";extension_dir = php.mssql.dll " et la modifier pour lobtenir sans le " ; " : "extension_dir = php.mssql.dll", librairie MS SQL Server. Rechercher la ligne ";extension_dir = php_gd.dll " et la modifier pour lobtenir sans le " ; " : "extension_dir = php_gd.dll", librairie graphique. Rechercher la ligne ";extension_dir = php.mbstring.dll " et la modifier pour lobtenir sans le " ; " : "extension_dir = php.mbstring.dll", librairie sur les chanes de caractres.

    Copier dans "C:\winnt\system32\" le fichier "NTWDBLIB.DLL".

    Redmarrer lordinateur !

    NB : Si la connection au serveur ne marche pas, il se peut quil manque les pilotes MS SQL Server, dans ce cas installer Microsoft Data Access Components (MDAC) 2.6 SDK.exe.

    http://download.winzip.com/wz81fr.exe

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 23 sur 82 Jonathan WEISBERG

    6.2 Test et Affichage

    Pr-requis : connaissances en HTML, JavaScript, CSS.

    Avant tout vrifier que php est correctement installer, en crant un fichier "phpinfo.php" et contenant :

    Le crer dans le rpertoire "C:\topcall". Lancer votre navigateur web et dans la barre dadresse saisir :

    http://localhost/topcall/phpinfo.php

    Cette fonction interne php permet de connatre les tats des librairies, et des variables actives ou non de php :

    http://localhost/topcall/phpinfo.php

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 24 sur 82 Jonathan WEISBERG

    6.3 Connexion la base de donnes MS SQL Server

    Crer un fichier "test-connect.php", pour se connecter la base de donnes MS SQL Server, celle de Topcall, et le sauvegarder dans le rpertoire topcall, sous "C:\topcall\". Ce script a pour objectif de compter le nombre total de ligne dans la base de donnes. Pour lexcuter ouvrir votre navigateur web et saisir lurl : "http://localhost/topcall/test-connect.php" : connect sql server

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 25 sur 82 Jonathan WEISBERG

    6.4 Affichage dun graphe comme image

    Maintenant que la connexion la base de Topcall est oprationnel, je vais tenter de vous expliquer comment afficher des images (dans le but dobtenir des graphes), en php.

    Il faut tout dabord dfinir le type dimage souhaiter (PNG ou JPEG), ici le choix est pour du JPEG, format plus standard chez windows : Soit le fichier "image.php" contenant : header ("Content-type: image/jpeg");

    Ensuite, le fonctionnement global est assez similaire celui d'un logiciel de retouche d'images. Vous crez une nouvelle image en choisissant ses dimensions, vous choisissez une couleur de fond et vous l'enregistrez dans le format que vous dsirez. Ce qui donne en PHP le script suivant:

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 26 sur 82 Jonathan WEISBERG

    On utilise une couleur via la fonction ImageColorAllocate. Cette fonction deux objectifs: Elle cre une couleur stocke dans une variable pouvant tre rutilise ultrieurement Elle enregistre cette couleur dans la palette de l'image $im Les paramtres correspondent aux composantes Rouge, Vert et Bleu, qui sont trois valeurs comprises entre 0 et 255. On a donc cr ici une couleur rouge.

    int imagecolorallocate ( resource im , int red , int green , int blue )

    imagecolorallocate retourne un identifiant de couleur, reprsentant la couleur compose avec les couleurs RGB ( red , green , blue ). L'argument im est le rsultat de la fonction imagecreate . imagecolorallocate doit tre appele pour crer chaque couleur qui sera reprsente par im .

    Exemple :

    Important : Cette couleur tant la premire tre enregistre dans la palette de l'image, elle correspondra la couleur de fond.

    Un appel au script "image.php" va donc gnrer une image JPEG. Pour intgrer celle-ci au navigateur web, procdez de la mme faon que pour une image classique:

    On peut mme passer des paramtres au script qui va gnrer l'image (la couleur de fond par exemple):

    Sachant que pour rcuprer les informations provenant dun passage par paramtre, on utilise quelque soit la mthode (get ou post) : $_REQUEST["couleur"] retourne "bleu"

    En procdant comme ceci, on imagine facilement de dessiner un graphe de btons ou une courbe de points, sachant quun bton est un rectangle allong, et une courbe une succession de trait reliant les points entre eux.

    Pour les btons, jutilise : int imagefilledrectangle ( resource im , int x1 , int y1 , int x2 , int y2 , int col)

    imagefilledrectangle dessine un rectangle de couleur col dans l'image im , en commenant par le sommet suprieur gauche ( x1 , y1 ) et finissant au sommet infrieur droit ( x2 , y2 ). Le coin suprieur gauche est l'origine (0, 0).

    Pour les segments, jutilise : int imageline ( resource im , int x1 , int y1 , int x2 , int y2 , int col )

    imageline dessine une ligne depuis le point ( x1 , y1 ) jusqu'au point ( x2 , y2 ) (le coin suprieur gauche est l'origine (0,0)) dans l'image im et avec la couleur col .

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 27 sur 82 Jonathan WEISBERG

    6.5 Lapplication de statistiques temps rels

    Pr-requis : connaissances en HTML, JavaScript, CSS.

    Le choix de la charte socit respecter fut simple, puisque jai pu faire comme bon me semble, sauf quil ne fallait pas oublier quelques liens vers lintranet socit. Pour ce faire, jai repris les anciens logos et certaines mise en page. Sachant que le tout est gr par un fichier : feuilles de style (CSS), il suffit de le modifier et les rpercussions seront reportes sur les pages contenants le lien vers ce fichier. Les feuilles de style permettent de dfinir tous les diffrents styles de lapplication qui contient le lien vers ce fichier.

    Exemple comment :

    Voici un lien vers une feuille de style "style.css" :

    Voici ce que contient ce fichier : BODY {background-color: rgb(50,50,200); color: white;} IMG {border: none;} .first {font-size: 150%; color: yellow;} .titre1 {text-align: center; font-size: 150%; color: white; letter-spacing: .1cm;} A {text-decoration: none; color: white;}

    TABLE {border: none;} TD.titre2 {text-align: center; vertical-align: center; font-size: 150%; color: white; letter-spacing: .2cm; border-color: red; border-top-style: dashed; border-bottom-style: dashed; border-width: 1px;}

    A.menu {text-decoration: none; color: white;} A.menu:hover, A.menu:active {color: yellow;} A.menu:hover {font-size: 110%; text-decoration: underline;}

    TD.search {vertical-align: top;} TABLE.result {border: thin solid black;} TD.TitreSearch {background-color: yellow; color: black; border: thin solid white; text-align: center;} TR.row {background-color: rgb(0,0,255); color: white;} TR.rowSelect {background-color: yellow; color: black;}

    P.graphe {text-align: center;} IMG.graphe {border: thin solid black;}

    .top {text-align: right;}

    Explications :

    Le nom qui est devant les accolades "{}", correspond la balise qui sera dfinit par le contenu des accolades. Chaque paramtre est spar par des points-virgules ";". Cf. : BODY{}, IMG{} On peut dfinir des classes de paramtres exploitables dans une balise, par un point et le nom de la classe. Cf. : .first{}, .titre1{} Ou tout simplement lassociation des 2 types. Cf. : TD.titre2{}, qui ne sapplique qu la balise TD contenant lappel de la classe titre2, soit TITRE

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 28 sur 82 Jonathan WEISBERG

    Jutilise le mme principe pour les scripts JavaScipt, jinsre un lien vers le fichier contenant lensemble des scripts utiles :

    Exemple dune des fonctions continues dans ce fichier : Cette fonction sappelle toutes les 100 ms et elle est excute au chargement de la page.

    /* Window Status Bar */ function StatusBar() { var dt=new Date();

    var jour=dt.getDay(); if (jour

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 29 sur 82 Jonathan WEISBERG

    La page daccueil contient lensemble des menus (Statistiques personnalises, Statistiques temps rels, Statistiques semaines et mois, Recherche de fax dans la base de donnes Topcall) :

    Si on clique sur un des menus les informations correspondantes apparaissent en dessous :

    Les options sont : et par dfaut : sur 1 heure(s) et la tranche horaire propose 1 heure par dfaut, le tout est contrl en JavaScript :

    /*************************************/ function InitTps(choix) { form=window.document.forms[0]; // controle la valeur par dfaut lie la slection du type de temps (heures/minutes) var i=5; if(choix == 1)

    if(form.elements[i+1].value == 'h')

    window.location="?menu=1&choix=h";

    else if(form.elements[i+1].value == 't')

    window.location="?menu=1&choix=t"; if(choix == 2)

    form.elements[i].value=1; }

    Ainsi dans le fichier "index.php", on utilise un affichage conditionnel selon le type de "choix", reu par le passage par la barre dadresse.

    Exemple :

    Permet de garder slectionner le menu choisis (heure(s) ou tranche) aprs la slection.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 30 sur 82 Jonathan WEISBERG

    Le lien vers "Statistiques temps rels" ouvre une nouvelle page. Le lien vers "Statistiques mensuelles" ouvre une nouvelle page.

    Pour y arriver, jai insr dans le code html de la page un affichage conditionnel du sous-menu afficher, la condition est donne par un passage par la barre dadresse. La valeur de la variable "menu" conditionne laffichage.

    Si la variable rcuprer par la barre dadresse vaut 2, on inclut dans la page celle nomm "stats_tpsr.php". Sachant que la page par dfaut activ au niveau de IIS est "index.php" : Statistiques temps rels

    Ainsi, un clique sur le menu "Statistiques temps rels" excute dans cette mme page une autre page php. La page nomm "stats_tpsr.php", permet de donner le nombre de fax sortants sur les 10 dernires minutes (cf. Statistiques temps rels).

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 31 sur 82 Jonathan WEISBERG

    Ou bien, dans ce cas on crit du code html dans la page, une balise "" et un tableau "", la variable "$method" contient "get" :

    Recherche de fax dans la base de donnes Topcall

    Ici, on envoie toutes les informations qui sont dans la balise "" la page "search.php", qui permet dafficher les informations recherches. De plus je contrle laide dun script en JavaScript les dates saisies, sachant que cette rubrique permet de rechercher ou non un numro ou un nom, selon si les fax sont entrants et/ou sortants, pour une plage horaire donne (une huere par dfaut) dune date dfinie (celle du jour par dfaut) cf. ANNEXE C.

    Pour voir le contenu complet du fichier "index.php" cf. ANNEXE B.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 32 sur 82 Jonathan WEISBERG

    Pour simplifier la gestion du site et lhomognit de celui-ci, jai cre 2 fichiers, correspondant lentte et le pied de page, utiliss pour chaque page.

    Linsertion des fichiers ce fait comme ci-dessous :

    Le fichier "haut.htm" : TOPCALL - DOSI - RESEAU INTRANET RCI

    Direction de lOrganisation des Systemes dInformation

    Le fichier "bas.htm" :

    WebMaster

    http://www-net.grouperci.com/infos/topcall">http://www.grouperci.com/"http://www.intra.renault.fr"

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 33 sur 82 Jonathan WEISBERG

    Ce qui donne :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 34 sur 82 Jonathan WEISBERG

    Pour le lien WebMaster, cest une fentre popup qui permet de menvoyer un mail, en utilisant le serveur mail de RCI Banque, pour lenvoie :

    N.B.

    : Cette partie a t ralise la fin du stage et cest pour cela que le lien vers "WebMaster" napparatra pas tout le temps, car les snapshots ont t raliss au cours du stage.

    A louverture de la fentre, la partie permettant de rdiger le mail napparat pas, il faut cliquer "Jonathan WEISBERG", pour la faire apparatre. Puis si on clique de nouveau sur "Jonathan WEISBERG", on encoie un mail en utilisant le logiciel de mail install sur la machine cliente, soit en gnrale outlook, grce la fonction "mailto:[email protected]". Pour lenvoie du mail, jai ralis une fonction mail_html, qui permet de lenvoyer au format html :

    mailto:[email protected]

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 35 sur 82 Jonathan WEISBERG

    Pour donner limpression de menu droulant, jai jou sur le passage par paramtres avec un affichage conditionnel :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 36 sur 82 Jonathan WEISBERG

    6.5.1 Statistiques personnalises

    En fonctionnant sur le principe nonc ci-dessus, je fournis donc des paramtres un fichier qui sera trait comme une image, par le navigateur web (cf. Affichage dun graphe comme image). Voici les explications par ordre chronologique, concernant les statistiques personnalisees.

    Les paramtres fournis au fichier "graphe.php" sont les donnes ncessaires laffichage demand, la date et lheure convertit en secondes par rapport au 1er janvier 1970 soit le timestamp dunix. Ainsi tous les graphes auront la mme rfrence de calcul et daffichage. Si on affichait tous les graphes il y avait une diffrence entre le premier et le dernier graphe, lcart constat est peu prs d1 minute, mais quand mme, je prfre tre rigoureux ! Avant de fournir les paramtres au fichier "graphe.php" jenregistre dans un fichier temporaire les donnes ncessaires pour laffichage des graphes. Ainsi au lieu de faire autant de requte que de graphe, je ne fais quune seule requte. Ensuite pour chaque graphe je rcupre les donnes utiles dans le fichier pour les charger dans un tableau dynamique, et enfin jutilise ce tableau pour les affichages des graphes. Pour les paramtres date et heure, il existe deux choix, pour un nombre dheures ou pour une tranche horaire :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 37 sur 82 Jonathan WEISBERG

    Je veux obtenir des graphes de taille 640 480 pixels, je trace des graphes avec des abscisses de longueur de 600 pixels, car jutilise 20 pixels comme marge gauche et droite. Avant je faisais autant de requte que de pixels, soit 600 requtes par graphe. Cela ralentissait considrablement laffichage. En affichant les 5 graphes je mettais quasiment 4 minutes ! La raison tatit que le nombre de requte tait importante et la dure de lopration proportionnelle, le serveur MS SQL Server arrtait le processus car son occupation tait trop longue. Pour y remdier, je ne fais quune requte vers la base de donne, et je stocke les champs utiles dans un fichier puis, je travaille avec les champs qui mintrressent.

    Pour charger le contenu du fichier en mmoire, jutilise une fonction php qui considre comme une ligne du tableau chaque donne qui se termine par un retour chariot : array file ( string filename , int use_include_path ) file est identique readfile , hormis le fait que file retourne le fichier dans un tableau. Chaque lment du tableau correspond une ligne du fichier, et les retour-chariots sont placs en fin de ligne.

    Pour accder aux donnes, on utilise le tableau retourn.

    Ainsi, les calculs effectus sont en mmoire et donc nettement plus rapide et ne dpendent plus du rseau. Avec cette mthode, je mets 1 minute 30 ! Les donnes rcupres sont MsgClass_Recipient, Time_Action, Delay, Channel_X, et correspondent respectivement au type de fax (FAX/SMTP), la date et lheure de lmission, le temps mit pour traiter le fax, la ligne de fax utilise.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 38 sur 82 Jonathan WEISBERG

    Jai propos par la suite de pouvoir mettre sur une page tous les graphes souhaits et non pas une page = un graphe, dans le but de pouvoir faire des comparaisons, cette ide a t accepte. Au dbut, je donnais la possibilit lutilisateur de nafficher quun graphe parmi les 5 proposs (nombre de fax entrants, nombre de fax sortants, nb max de lignes utilises, utilisation des lignes, temps de rponse).

    Des le dbut javais regroup les diffrents calculs et types daffichage dans le mme fichier, pour nimporte quel graphe. Or un graphe est trait en php, comme une image html (cf. Affichage dun graphe comme image), de ce fait il suffit dafficher autant dimage que de graphe dsir avec les bons paramtres ! Jai donc fait une boucle sur laffichage dun graphe avec des paramtres diffrents, selon les graphes dsirs.

    Ainsi, je ralise autant de boucle que de graphes demands sur la balise :

    Pour y arriver, il faut rechercher dans la barre dadresse lensemble des choix souhaits, et passer en paramtres, "graphe.php", les valeurs ncessaires laffichage du graphe, soit tout ce qui se situe partir de la variable "nb=" :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 39 sur 82 Jonathan WEISBERG

    Le fichier "graphe.php" : Mthode utilise :

    Selon le type de graphe dsir, Chargement du fichier rsultat de la requte SQL dans un tableau, Calcul sur le tableau SQL pour afficher le graphe, Le rsultat du calcul est stock dans tableau est 2 dimensions :

    o Tab[0][] : contient les infos de laxe des abscisses, le dbut de la tranche horaire

    o Tab[1][] : contient les valeurs calcules, si "choix=4" utilisations des lignes, soit nombre de fax entrants, pour la tranche horaire demande

    o Tab[2][] : contient le nombre de fax sortants, si "choix=4" utilisations des lignes, pour la tranche horaire

    Quelque soit le graphe demand, jaffiche les axes cartsiens, Affichage des valeurs correspondantes :

    o A laxe des abscisses o Aux points calculs

    Selon le type de graphe : o Affichage en btons

    Si laffichage est sur 1 heure, on affiche des btons, Sinon on affiche des traits verticaux.

    o Affichage en courbe, si "choix=3" nombre maximum de lignes.

    Exemple de calcul comment :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 40 sur 82 Jonathan WEISBERG

    $bleu = ImageColorAllocate($im, 0, 0, 255); $jaune = ImageColorAllocate($im, 125, 255, 125);

    /********************************************************/ //calcul des points pour l'affichage /********************************************************/ //pour chaque abscisse on veut 600pt de calculs $iMax = $width-2*$marge; //nb de points de calcul

    /********************************************************/ //nbre fax entrants / sortants /********************************************************/ if($_REQUEST["choix"] == 1 || $_REQUEST["choix"] == 2){

    if($_REQUEST["choix"] == 1){

    $titre = 'nombre de fax entrants';

    $type = 'SMTP';

    }

    else if($_REQUEST["choix"] == 2){

    $titre = 'nombre de fax sortants';

    $type = 'FAX';

    }

    //calcul la seconde

    if($_REQUEST["tps"] == 'h')

    $tps = $_REQUEST["nb"]*3600;

    else if($_REQUEST["tps"] == 'm')

    $tps = $_REQUEST["nb"]*60;

    if($_REQUEST["tps"] == 't') //si on a demand une tranche horaire

    $pas = round(($timestamp2 - $timestamp1)/$iMax);

    else

    $pas = round($tps/$iMax);

    for($i=0, $j=0; $i

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 41 sur 82 Jonathan WEISBERG

    Exemple daffichage comment :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 42 sur 82 Jonathan WEISBERG

    /******************* affichage commun au choix 1, 2 et 5 *******************/

    if($_REQUEST["choix"] == 1 || $_REQUEST["choix"] == 2 || $_REQUEST["choix"] == 5){

    //trace les batons for($i=0; $i

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 43 sur 82 Jonathan WEISBERG

    Si la demande concerne le "nombre de fax sortants" sur la dernire heure :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 44 sur 82 Jonathan WEISBERG

    Si le choix de la tranche horaire se situe entre 6h et 22h :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 45 sur 82 Jonathan WEISBERG

    Concernant le "Nombre maximum de lignes utilises", il sest pos quelques problmes : Il faut compter le nombre de lignes utilises entre un instant T et T+1. Cest dire, quand un fax arrive au TopCall, il est mis en fil dattente (Time_Created), puis il est trait, un compteur de temps se met en route (Delay), et enfin le fax mis (time_Action). Les noms entre parenthses correspondent aux noms des champs de la table TCReport de la base de TopCall utilises. Soit :

    Un envoi de fax sur une ligne est schmatis par un trait horizontal, le dbut du trait correspond Time_Created et la fin Time_Action. Entre T et T+1 on compte 4 lignes de fax en activits, le problme est lintervalle de temps, sil est petit tout va bien, mais sil est plus grand, il ne faut pas compter deux fois la mme ligne, sous peine davoir des rsultats errons.

    La dure effective de lenvoi dun fax nest pas ncessairement la diffrence entre Time_Action et Time_Created. Si le fax arrive et que le serveur est surcharg en traitement de fax (ouverture et conversion au format ".tiff"), le Delay sera diffrent de cette valeur, puisque cette dernire valeur sera plus grande que la prcdente.

    T T+1 Temps

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 46 sur 82 Jonathan WEISBERG

    Pour cela jai dvelopp un script en php recherchant cette diffrence de valeur : Il affiche Time_Created, Delay (temps mit pour transmettre le fax du TopCall), Time_ActionDelay, Time_Action, Delta (affiche "True" si diffrence entre Time_Created et (Time_ActionDelay)) : La page "testdelay.php" :

    Sur la mme plage horaire, si on recherche dans la page la chane "true" :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 47 sur 82 Jonathan WEISBERG

    Soit le code :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 48 sur 82 Jonathan WEISBERG

    Sil existe, lavenir, beaucoup de diffrence entre ces deux valeurs, il sera ncessaire de rajouter un serveur de traitement de mail, pour louverture et la conversion au format ".tiff".

    Le graphe ci-dessous est intressant, par le fait quon observe un problme sur la deuxime srie de btons, soit le TopCall T2, suite cette remarque jai redmarr le T2, et tout est redevenu dans lordre :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 49 sur 82 Jonathan WEISBERG

    Pour voir le contenu du fichier "graphe.php" cf. ANNEXE D.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 50 sur 82 Jonathan WEISBERG

    6.5.2 Statistiques temps rels

    Pour cette partie, jai dcid de donner le rsultat au moment o on clique sur le menu correspondant. Le calcul demand est de donner le nombre de fax sortant sur les 10 dernires minutes. Il suffit de compter le nombre de lignes dans la base, pour la tranche horaire donne et pour les fax sortants.

    Soit :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 51 sur 82 Jonathan WEISBERG

    Pour ce faire, jinclus au moment o on clique sur le menu, le fichier contenant le calcul correspondant :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 52 sur 82 Jonathan WEISBERG

    Do laffichage:

    Si sur les 10 dernires minutes, il ny a eu aucun fax sortant, il y a un problme, soit un affichage diffrent :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 53 sur 82 Jonathan WEISBERG

    Finalement on sest aperu, que ce calcul ncessite que les 2 serveurs de fax soient hors-service. On a donc dcid dafficher les informations concernant les fax sortants sur les dernires minutes, mais par serveur, et chaque serveur est divis par 2. Ainsi on 4 donnes, sachant que chaque serveur gre 60 lignes, chaque donne correspond 15 lignes de fax.

    Do la requte modifie, par rapport on nombre de ligne de fax :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 54 sur 82 Jonathan WEISBERG

    $l2 = $offset + ($j+1)*$NbSubdivision;

    $sql = "SELECT ID_Action FROM TCReport.dbo.Action_Table

    WHERE upper(MsgClass_Recipient) = 'FAX'

    AND Time_Action between '$time1' and '$time2'

    AND Channel_X between $l1 and $l2";

    $result_id = MSSQL_QUERY($sql,$db) OR DIE('Erreur SQL :

    '.$sql.''.mssql_get_last_message());

    $res = MSSQL_NUM_ROWS($result_id); //compte le nombre de ligne rsultant de la

    requete

    $total += $res;

    //echo $sql;

    //echo ' '.$res.' ';

    //$res = 0;

    if($res < $seuil) //condition d'affichage

    $coul = $alert; //rouge = alert, problme

    else

    $coul = $ras; //vert

    echo "[$l1;$l2] :".''.$res.''; }

    if($total < $seuil) //condition d'affichage

    $coul = $alert; //rouge = alert, problme else

    $coul = $ras; //vert

    echo "Total [$T1_start;$l2]".' ='.$total.''; echo '';

    //fermetture de la BDD MSSQL_FREE_RESULT($result_id); MSSQL_CLOSE($db); ?>

    Do laffichage :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 55 sur 82 Jonathan WEISBERG

    Et en cas de problme :

    Ce qui correspond :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 56 sur 82 Jonathan WEISBERG

    Le problme est remont au service rseau, qui surveille lensemble des serveurs et des applications, par un script unix, lequel recherche dans la page excute si le code couleur rouge "#ff0000" apparat grce la commande "grep". En cas de problme, ce que jai entour en rouge est colori en rouge !

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 57 sur 82 Jonathan WEISBERG

    6.5.3 Statistiques mensuelles

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 58 sur 82 Jonathan WEISBERG

    Mon tuteur de stage ma demand de raliser un tableau regroupant, le nombre total de fax entrants et sortants, le nombre moyen de lutilisation maximum des lignes et le nombre moyen de temps de rponse, sur les deux dernires annes, ces donnes correspondent chaque mois. Ainsi le tableau possdera 24 lignes.

    Pour ce faire, je rcupre les mthodes de calculs des graphes que jadapte mes besoins. Il est souligner que les calculs sont sur un mois, de ce fait il faut faire les calculs en tenant compte de ce paramtre. Au dpart, jai essay de faire ces calculs en prenant comme plage de temps un mois pour le nombre moyen de lutilisation maximum des lignes, mais cela fait planter lapplication, celle-ci occupe pendant trop de temps les ressources rseau du serveur MS SQL Server, sur lequel se trouve la base de donnes TopCall. Par contre cela est possible pour les autres donnes. Il faut noter quon ne peut calculer lensemble des valeurs voulues, car le calcul est beaucoup trop long, et en consquence cela fait planter lapplication. En moyenne il faut deux minutes pour chaque donne, les calculs sont donc possibles un par un. Ainsi, jai pens utiliser le passage par adresse pour avoir une nouvelle fentre, pour effectuer le nouveau calcul. De plus pour le calcul, le plus long, le nombre moyen de lutilisation maximum des lignes, ne plante pas si on le fait sur une journe, cest pourquoi je dcompose ce calcul par jour et jajoute dans le passage par adresse le nombre de jour et la valeur calcule.

    Il est noter que les valeurs passes par la barre dadresse sont le nombre de mois retirer au mois en cours par rapport lanne en cours, et le type de calcul dsir. Par exemple, si le mois=2 et lanne=2003, cela correspond fvrier 2003. Si le mois=0 et lanne=2003, cela correspond dcembre 2002. Si le mois=-2 et lanne=2003, cela correspond fvrier 2002.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 59 sur 82 Jonathan WEISBERG

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 60 sur 82 Jonathan WEISBERG

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 61 sur 82 Jonathan WEISBERG

    6.5.4 Recherche de fax dans la base de donnes

    La recherche consiste pour une date donne, pour les types de fax entrants et/ou sortants, de rechercher un nom ou un numro de tlphone. Ce qui donne comme rsultat pour la dernire heure qui le temps par dfaut :

    Note

    : sil est affich dans "De :" "SMTP", le fax est sortant, sinon le fax est entrant.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 62 sur 82 Jonathan WEISBERG

    Soit le code comment :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 63 sur 82 Jonathan WEISBERG

    7 Bibliographie

    http://www.php.net

    http://www.nexen.net

    La documentation en franais de php : doc.php.nexen.pdf

    http://dev.nexen.net/docs/php/

    http://www.multimania.lycos.fr/webmaster/references/php/data.phtml

    http://phpdebutant.org/

    http://www.php.nethttp://www.nexen.nethttp://dev.nexen.net/docs/php/http://www.multimania.lycos.fr/webmaster/references/php/data.phtmlhttp://phpdebutant.org/

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 64 sur 82 Jonathan WEISBERG

    ANNEXE A fonctions graphiques

    Pour chaque fonction, vous trouverez une courte description, sa syntaxe et un lien vers la documentation officielle. L'objectif n'est pas ici de donner un exemple pour chaque fonction, mais plutt une explication rapide. La version de la librairie partir de laquelle une fonction est implmente est galement spcifie. Rappel : les versions de librairies sont indiquer en excutant la fonction "phpinfo();". Voici donc un extrait des fonctions utilises pour crer les graphes :

    Syntaxe avec lien vers la documentation officielle.

    Version

    Description

    $im = ImageCreate ($largeur, $hauteur)

    Toutes Cre une image vide (256 couleurs) $im de largeur $largeur et de hauteur $hauteur. (Utiliser de prfrence le format PNG)

    $im = ImageCreateTrueColor ($largeur, $hauteur)

    2.0.2 Idem ImageCreate mais l'image n'est plus limite 256 couleurs. (Utiliser de prfrence le format JPEG)

    $col = ImageColorAllocate ($im, $rouge, $vert, $bleu)

    Toutes

    Place dans la variable $col une couleur dont les composantes sont $rouge, $vert, $bleu (compris entre 0 et 255). Voir la partie I pour plus de dtails.

    ImageEllipse ($im, $x, $y, $l, $h, $col)

    2.0.2 Dessine dans l'image $im une ellipse en partant du point ($x,$y), de largeur $l, de hauteur $h et de couleur $col.

    ImageFilledEllipse ($im, $x, $y, $l, $h, $col)

    2.0.2 Idem ImageEllipse mais l'ellipse est remplie par la couleur $col

    ImageFill ($im, $x, $y, $col)

    Toutes Colorie dans l'image $im avec la couleur $col un rectangle plac entre ($x,$y) et le coin infrieur droit de l'image.

    ImageLine ($im, $x1, $y1, $x2, $y2, $col)

    Toutes Trace dans $im une ligne de couleur $col entre les points ($x1,$y1) et ($x2,$y2)

    ImagePolygon ($im, $points, $num_points, $col)

    Toutes

    Trace un polygone dans $im dont la liste des points est donne dans le tableau $points ($points[0]=$x0, $points[1]=$y0, $points[2]=$x1, $points[3]=$y1, etc...), $num_points est le nombre de points dans le tableau et $col la couleur.

    ImageFilledPolygon ($im, $points, $num_points, $col)

    Toutes Idem ImagePolygon mais le polygone est rempli par la couleur $col

    ImageRectangle ($im, $x1, $y1, $x2, $y2, $col)

    Toutes Trace dans $im un rectangle de coin suprieur gauche ($x0, $y0) et de coin infrieur droit ($x1, $y1) de couleur $col

    ImageFilledRectangle ($im, $x1, $y1, $x2, $y2, $col)

    Toutes Idem ImageRectangle mais le rectangle est rempli par la couleur $col

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 65 sur 82 Jonathan WEISBERG

    ImageSetStyle ($im, $style) ImageSetBrush ($im, $brush)

    2.0.2

    Ces fonctions permettent de changer le style de trac des lignes, consultez la documentation officielle et surtout l'exemple pour la fonction ImageSetStyle qui montre galement comment utiliser ImageSetBrush

    ImageSetPixel ($im, $x, $y, $col)

    Toutes

    Dessine dans $im un point de coordonnes ($x,$y) et de couleur $col

    ImageSetThickness ($im, $epaisseur)

    Toutes Change l'epaisseur des lignes traces par toutes les fonctions.

    ImageString ($im, $police, $x, $y, $chaine, $col)

    Toutes

    Dessine dans $im la chaine de caractre $chaine partir du point ($x,$y) avec la couleur $col et avec la taille de police de caractre $police (compris entre 0 et 5)

    ImageStringUp ($im, $police, $x, $y, $chaine, $col)

    Toutes Idem ImageString mais la chaine de caractres est dessine verticalement

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 66 sur 82 Jonathan WEISBERG

    ANNEXE B "index.php"

    Contenu de la page "index.php" :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 67 sur 82 Jonathan WEISBERG

    include("stats_tpsr.php"); } ?> Statistiques semaines et mois Recherche de fax dans la base de donnes Topcall

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 68 sur 82 Jonathan WEISBERG

    ANNEXE C "script.js"

    Voici le code JavaScript "script.js" utilis pour contrler la saisie des dates et heures :

    /*************************************/ function InitDuree(i) { form=window.document.forms[0]; // MAJ de la date actuelle var ToDay = new Date(), iour, mois; //var i=2;

    // du:

    form.elements[i].value = ToDay.getDate();

    form.elements[i+1].value = ToDay.getMonth()+1;

    form.elements[i+2].value = ToDay.getYear();

    if(ToDay.getHours() - 1 < 0){

    //on vient de changer de iour

    if(ToDay.getDate() == 1 && ToDay.getMonth()+1 == 1){

    //on est le 1er ianvier

    form.elements[i].value = 31;

    form.elements[i+1].value = 12;

    form.elements[i+2].value = ToDay.getYear() -1;

    }

    else if(ToDay.getDate() == 1){

    //on est le 1er

    form.elements[i].value = 31;

    form.elements[i+1].value = ToDay.getMonth()+1 -1;

    }

    else form.elements[i].value = ToDay.getDate() -1;

    form.elements[i+3].value = 23;

    }

    else form.elements[i+3].value = ToDay.getHours() - 1;

    form.elements[i+4].value = ToDay.getMinutes();

    form.elements[i+5].value = ToDay.getSeconds();

    // au:

    form.elements[i+6].value = new Date().getDate();

    form.elements[i+7].value = new Date().getMonth()+1;

    form.elements[i+8].value = new Date().getYear();

    form.elements[i+9].value = new Date().getHours();

    form.elements[i+10].value = new Date().getMinutes();

    form.elements[i+11].value = new Date().getSeconds();

    AfficheDate(i, form.elements[i].value, form.elements[i+1].value, form.elements[i+3].value, form.elements[i+4].value, form.elements[i+5].value, form.elements[i+6].value, form.elements[i+7].value, form.elements[i+9].value, form.elements[i+10].value, form.elements[i+11].value);

    }

    /*************************************/ function AfficheDate(i, jour1, mois1, h1, m1, s1, jour2, mois2, h2, m2, s2) { form=window.document.forms[0]; //var i=2;

    // du: if(jour1.length=1 && jour1

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 69 sur 82 Jonathan WEISBERG

    form.elements[i+5].value="0" + s1;

    // au:

    if(jour2.length=1 && jour2 28 && (form.elements[i+2].value % 4 != 0) ) form.elements[i].value = 28; else if( form.elements[i+1].value == 2 && form.elements[i].value > 29 && (form.elements[i+2].value % 4 == 0) ) form.elements[i].value = 29; else if( form.elements[i+1].value == 4 && form.elements[i].value > 30 ) form.elements[i].value = 30; else if( form.elements[i+1].value == 6 && form.elements[i].value > 30 ) form.elements[i].value = 30; else if( form.elements[i+1].value == 9 && form.elements[i].value > 30 ) form.elements[i].value = 30; else if( form.elements[i+1].value == 11 && form.elements[i].value > 30 ) form.elements[i].value = 30; else if( form.elements[i].value > 31 ) form.elements[i].value = 31; else if( form.elements[i+1].value > 12 ) form.elements[i+1].value = 12;

    //gestion des annes if( form.elements[i+2].value > ToDay.getYear() ) form.elements[i+2].value = ToDay.getYear(); else if( form.elements[i+2].value < ToDay.getYear()-1 ) form.elements[i+2].value = ToDay.getYear()-1;

    //gestion des horarires if( form.elements[i+3].value > 23 ) form.elements[i+3].value = 0; if( form.elements[i+4].value > 59 ) form.elements[i+4].value = 0; if( form.elements[i+5].value > 59 ) form.elements[i+5].value = 0;

    // au: if( form.elements[i+7].value == 1 && form.elements[i+6].value == 31 ) form.elements[i+6].value = 31; else if( form.elements[i+7].value == 2 && form.elements[i+6].value > 28 && (form.elements[i+8].value % 4 != 0) ) form.elements[i+6].value = 28; else if( form.elements[i+7].value == 2 && form.elements[i+6].value > 29 && (form.elements[i+8].value % 4 == 0) ) form.elements[i+6].value = 29; else if( form.elements[i+7].value == 4 && form.elements[i+6].value > 30 ) form.elements[i+6].value = 30; else if( form.elements[i+7].value == 6 && form.elements[i+6].value > 30 ) form.elements[i+6].value = 30; else if( form.elements[i+7].value == 9 && form.elements[i+6].value > 30 ) form.elements[i+6].value = 30; else if( form.elements[i+7].value == 11 && form.elements[i+6].value > 30 ) form.elements[i+6].value = 30; else if( form.elements[i+6].value > 31 ) form.elements[i+6].value = 31; else if( form.elements[i+7].value > 12 ) form.elements[i+7].value = 12;

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 70 sur 82 Jonathan WEISBERG

    //gestion des annes if( form.elements[i+8].value > ToDay.getYear() ) form.elements[i+8].value = ToDay.getYear(); else if( form.elements[i+8].value < ToDay.getYear()-1 ) form.elements[i+8].value = ToDay.getYear()-1;

    //gestion des horarires if( form.elements[i+9].value > 23 ) form.elements[i+9].value = 0; if( form.elements[i+10].value > 59 ) form.elements[i+10].value = 0; if( form.elements[i+11].value > 59 ) form.elements[i+11].value = 0;

    /**************************************************************/

    //control la validit des dates // du : if( ( form.elements[i].value > ToDay.getDate() ) && ( form.elements[i+1].value == (ToDay.getMonth() + 1) && form.elements[i+2].value == ToDay.getYear() ) )

    form.elements[i].value = ToDay.getDate(); if( ( form.elements[i+1].value > (ToDay.getMonth() + 1) ) && ( form.elements[i+2].value == ToDay.getYear() ) )

    form.elements[i+1].value = ToDay.getMonth() + 1;

    // au : if( ( form.elements[i+6].value > ToDay.getDate() + 1 ) && ( form.elements[i+7].value == (ToDay.getMonth() + 1) && form.elements[i+8].value == ToDay.getYear() ) )

    form.elements[i+6].value = ToDay.getDate(); if( ( form.elements[i+7].value > (ToDay.getMonth() + 1) ) && ( form.elements[i+8].value == ToDay.getYear() ) )

    form.elements[i+7].value = ToDay.getMonth() + 1;

    //enchainement des dates //validit sur les mois et les annes pour une dure de 1 mois //jours diffrents sur le meme mois if( eval(form.elements[i].value) > eval(form.elements[i+6].value) && eval(form.elements[i+1].value) == eval(form.elements[i+7].value) ){

    form.elements[i+6].value = form.elements[i].value;

    Duree(); //re-controle } //mois differents if( eval(form.elements[i+1].value) > eval(form.elements[i+7].value) && form.elements[i+2].value == form.elements[i+8].value )

    form.elements[i+7].value = form.elements[i+1].value; //limite sur 1 mois if( eval(form.elements[i+1].value) < eval(form.elements[i+7].value) -1 )

    form.elements[i+7].value = form.elements[i+1].value; //gestion du mois de decembre et janvier => les 2 annees sont differentes! if( form.elements[i+2].value == (ToDay.getYear() - 1) && eval(form.elements[i+2].value) < eval(form.elements[i+8].value) ){

    form.elements[i+1].value = 12;

    form.elements[i+7].value = 1; } //annees differentes if(eval(form.elements[i+2].value) > eval(form.elements[i+8].value))

    form.elements[i+8].value = form.elements[i+2].value;

    // control de la succession des heures // il suffit que l'heure de destination soit infrieur l'heure actuelle et l'heure d'origine inferieur celle de destination, // si le jour est aujourd'hui //du: if( form.elements[i].value == form.elements[i+6].value && form.elements[i+1].value == form.elements[i+7].value && form.elements[i+2].value == form.elements[i+8].value ){

    if( eval(form.elements[i+3].value) > eval(form.elements[i+9].value) ) form.elements[i+3].value = form.elements[i+9].value -1;

    if( eval(form.elements[i+4].value) > eval(form.elements[i+10].value) ) form.elements[i+4].value = form.elements[i+10].value;

    if( eval(form.elements[i+5].value) > eval(form.elements[i+11].value) ) form.elements[i+5].value = form.elements[i+11].value; } //au: if( form.elements[i+6].value == ToDay.getDate() && form.elements[i+7].value == ToDay.getMonth()+1 && form.elements[i+8].value == ToDay.getYear() ){

    if( eval(form.elements[i+9].value) > ToDay.getHours() ) form.elements[i+9].value = ToDay.getHours();

    if( eval(form.elements[i+10].value) > ToDay.getMinutes() ) form.elements[i+10].value = ToDay.getMinutes();

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 71 sur 82 Jonathan WEISBERG

    if( eval(form.elements[i+11].value) > ToDay.getSeconds() ) form.elements[i+11].value = ToDay.getSeconds(); }

    AfficheDate(i, form.elements[i].value, form.elements[i+1].value, form.elements[i+3].value, form.elements[i+4].value, form.elements[i+5].value, form.elements[i+6].value, form.elements[i+7].value, form.elements[i+9].value, form.elements[i+10].value, form.elements[i+11].value); }

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 72 sur 82 Jonathan WEISBERG

    ANNEXE D "graphe.php"

    Voici le fichier "graphe.php", contenant les calculs et laffichage des graphes, selon les paramtres reus par le passage par la barre dadresse :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 73 sur 82 Jonathan WEISBERG

    //calcul la seconde

    if($_REQUEST["tps"] == 'h')

    $tps = $_REQUEST["nb"]*3600;

    else if($_REQUEST["tps"] == 'm')

    $tps = $_REQUEST["nb"]*60;

    if($_REQUEST["tps"] == 't') //si on a demand une tranche horaire

    $pas = round(($timestamp2 - $timestamp1)/$iMax);

    else

    $pas = round($tps/$iMax);

    for($i=0, $j=0; $i

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 74 sur 82 Jonathan WEISBERG

    //scanne le fichier contenant les valeurs

    if(ereg('SMTP', $sql[0+$k])) //fax entrant Delay

    $delay = (int)$sql[2+$k];

    else if(ereg('FAX', $sql[0+$k])) //fax sortant Duration

    $delay = (int)$sql[3+$k];

    $time_created = ConverDateToFr($date, 1) - ConverDateToFr($sql[1+$k], 1) -

    $delay; //tps en secondes

    //$time = ConverDateToFr($date, 1) - ConverDateToFr($sql[1+$k], 1) - settype($sql[2+$k], "integer");

    //temps en seconde d'un fax au moment o il est trait, par rapport maintenant

    //temps en seconde de maintenant - temps en sec de Time_Action - temps en sec de Delay

    //ex: si l'affichage est sur 1h, soit 3600s, les premires valeures rcupres, commenceront vers 3600s jusqu' 0s

    //enchantillonage la seconde entre le momment o le fax est trait et emis

    //if($time_created >= $time_created-$delay)

    for($t=$time_created; $t>$time_created-$delay; $t--)

    $tab_lignes[$t][(int)$sql[4+$k]] = 1;

    //la valeur 1, correspond l'tat actif de la ligne

    //1ere dimension est le temps pass par rapport au moment prsent

    //2eme dimension est le numro de ligne correspondant au fax

    }

    for($i=0, $j=$tps; $i$j-$pas; $t--){ //pour une tranche horaire de temps: $pas, on dcrmente

    $tmp[$t]=0;

    for($l=0; $l

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 75 sur 82 Jonathan WEISBERG

    $tab[1][$i]++; //compte le nombre de ligne rsultant de la requete

    $type = 'FAX'; //fax sortants

    if(ereg($type, $sql[0+$k]) && ($time1

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 76 sur 82 Jonathan WEISBERG

    unset($tmp); $j=0; //libre le tableau de la mmoire

    }

    }

    $iMax /= 10;

    }

    }

    /********************************************************/ //affichage commun /********************************************************/

    unset($sql); //libre le tableau de la mmoire $PtAxeX = ($width-2*$marge)/$iMax; //distance entre 2 points d'affichage axe abscisses

    /******************* affichage commun au choix 1, 2, 3 et 5 *******************/

    if($_REQUEST["choix"] == 1 || $_REQUEST["choix"] == 2 || $_REQUEST["choix"] == 3 || $_REQUEST["choix"] == 5){

    //recherche la valeur max d'une hauteur

    $valmax = max($tab[1]);

    if(! $valmax) //si egale zero

    $valmax = 1;

    //dessine les axes horizontaux, servant d'indicateur de valeur des hauteurs de batons for($i=0; $i30, on affiche un trait tous les 5,

    //sinon on affiche touts les traits horizontaux

    if( ( $valmax != $tab[1][$i] ) && ( $valmax > 30 ) )

    for($j=0; $j

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 77 sur 82 Jonathan WEISBERG

    //trace les batons for($i=0; $i 30 ) )

    for($j=0; $j

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 78 sur 82 Jonathan WEISBERG

    $HauteurBaton = round(($tab[1][$i]+$tab[2][$i])*($height-$margeh-$margeb)/$valmax);

    ImageLine($im, $marge, $height-$margeb-$HauteurBaton, $width-$marge, $height-

    $margeb-$HauteurBaton, $jaune);

    ImageString($im, $police, $marge -17, $height-$margeb-$HauteurBaton -10,

    $tab[1][$i]+$tab[2][$i], $noir);

    }

    }

    //trace les batons for($i=0; $i

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 79 sur 82 Jonathan WEISBERG

    ImageString($im, $police, $posX, 0, 'val max : '.max($tab[1]), $noir);

    //valeur moyenne

    if(!$cpt) //si egale zero

    $cpt=1;

    ImageString($im, $police, $posX, 10, 'val moy : '.round($nbtotal/$cpt), $noir);

    } else if($_REQUEST["choix"] == 4){

    for($i=0, $nbtotal=0; $i

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 80 sur 82 Jonathan WEISBERG

    ANNEXE E "stats_num.php"

    Le fichier "stats_num.php", qui a pour but de compter le nombre de fax entrants/sortants pour un nombre de jour donn :

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 81 sur 82 Jonathan WEISBERG

    8 Travaux effectus en plus

    Jai effectu des oprations sur le rseau RCI Banque, outre la mise en place de lapplication de statistiques temps rel. Ces opraions taient de dfinir comment interconnecter deux rseaux, sans passer par un routeur, pour cela jai du configurer un switch CISCO. Tout dabord jai dfini larchitecture mettre en place, puis valid, je lai paramtr. Pour y arriver, on ma donn la commande daide qui ma permis de dcouvrir lensemble des possibilits offertes par le switch CISCO, et ainsi de faire le paramtrage. Cf. Config du switch CISCO WS-C2948G.doc

    De plus on ma expliqu le fonctionnement de certaines thories concernant les diffrentes possibilites de mise en place dun switch CISCO et linterconnexion entre les diffrents ports. Ce fut donc fort interressant, car jai pu mettre en pratique ce que jai appris en rseaux.

  • lundi 23 juin 2003

    Rapport de Stage : Application de suivi de fax Page 82 sur 82 Jonathan WEISBERG

    9 Mon CV