-
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