IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gestion temporelle


Sujet :

Langage PHP

  1. #1
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut Gestion temporelle
    Bonjour à tous,

    Je vient de recevoir un nouveau projet à réaliser, un GMAO ( Gestion de matérial assisté par ordinateur), j'en suis qua la lecture du cahier des charges (enfin la feuille qui en fait office).
    Et il m'est apparu déja un problème.

    Lors par exemple d'achat de matériel un délai de livraison est prévu.
    Donc je valide la demande d'achat, et le délai est de 2 semaines.
    Elle passe donc en 'Attente de livraison'
    Le but est qu'au bout des 2 semaines (date de mise en attente + 2semaines) le script envoie un mail au demandeur lui demandant si il a était livré ou pas, et ceux tous les Xh ou jrs (suivant une priorité mais pas la peine d'en parler)
    jusqua ce que l'adminsitrateur recoive confirmation et termine la demande.

    Sur le papier c'est simple, mon problème vient de comment exécuter cela en terme de code.

    Est t'il possible d'activer un script qui dort durant 2 semaines ou plus ? je doute et ca serai pas fonctionnel, et vue que c'est multiutilisateur je le sent mal ce truc.

    Ou sinon comment faire en sorte disons d'éxécuter 1 page prévue uniquement à cela (car bon y'as 3 modules qui mail X entités suivant le cas Achat/Maintenance/Entretien) toutes les heures ?

    Je voie beaucoup de site de jeu qui utilise de la gestion temporel mais malheureusement je débute encore.
    Donc si vous pourriez me filer 2-3 pistes à voir pour réaliser cela ca serai chouette.

    Ah oui précision je sais pas si je vais être sous windows ou linux donc si votre solution est natif d'un système indiquer le moi juste^^.
    (Il existe CRON je crois sur linux mais j'en ai jamais vu encore).

    Merci à vous.

    PS : j'en profite aussi pour une autre question est t'il possible d'augmenter la taille d'upload authorisé pour uniquement 1 site web, là base est 2Mo me semble mais j'ai un client qui aimerai mettre plus environ 4-5Mo par images.
    Merci ^^
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  2. #2
    Membre habitué
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 199
    Points
    199
    Par défaut
    Salut,

    Oui, il faut que tu utilises les CRON. un script s'éxécute tous les X temps (tous les jours, toutes les 2 heures, tous les mercredis, etc.) Plutôt que de faire dormir un script 2 semaines et le réveiller, enregistre un évènement à faire par le CRON. Le prochain passage de celui-ci fera l'action demandée.

    Pour les jeux, d'autres techniques plus efficaces sont utilisées (par exemple, quand le joueur se conencte, tu mets à jour son or, ça permet de lisser automatiquement les mises à jour car personne ne joue en même temps).

    Pour l'upload c'est possible via un .htaccess, pense aussi à augmenter la directive memory_limit en même temps.

  3. #3
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    D'accord merci de ses premières infos.

    Aurai-tu des infos sur la réalisation de tache CRON ?
    Notamment est-ce qu'il est possible de faire appeler une page en php ?
    En gros simuler qu'un utilisateur ouvre la page.
    Ca me permetterai à ce moment de faire toute la gestion dans cette page.

    Enfaite j'espère surtout que c'est possible, sinon je voie pas comment réaliser la chose.

    Merci
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  4. #4
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Regarde la partie concernant les scripts PHP-CLI.

    Pour executer, un script php en cli, tu fais directement appel à php.exe + l'adresse du fichier.

    Ensuite, pour le cron,
    Tu trouveras tout ce dont tu as besoin

  5. #5
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ah php.exe + l'adresse
    Je connaissais pas merci.

    Ok je file sur Google mais faudrait prévoir une section CRON sur DVP un jour ca serai mieux :p
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  6. #6
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    euh cron c'est un simple fichier texte contenant 1 ligne par programme avec l'intervalle pour le lancer

    Vraiment pas de quoi en faire une section

  7. #7
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Oui je vient de réaliser lol.
    En cron je compte utilisé cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    59 * * * * * php /home/nom/remail.php
    Donc toutes les 59min

    Mais si j'ai bien suivi je doit installé php-cli sur la machine ?

    J'ai trouvé un autre exemple aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/usr/bin/php
    <?php print "hello world !"; ?>
    Ce qui permettrai de faire directement ./home/nom/remail.php
    Sans le php devant donc.

    Ma question à présent c'est quel chose utilisé ?
    Les deux utilise t'elle php-cli ?

    J'ai aussi lu ce cours
    http://matthieu.developpez.com/execution_periodique/
    Mais j'arrive pas à comprendre la différence suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Exemple de Cron Table#chaque minute, sans se décourager :
    * * * * * * php-cli -f /etc/www/uneMinuteEstPassee.php
    #chaque jour de semaine à 8h30 sauf en juillet et août
    30 8 * 1,2,3,4,5,6,9,10,11,12 1-5 php -f /etc/www/hell.php
    #chaque vendredi à 18h...
    0 18 * * 5 /etc/www/paradise.php
    #...et tous les 14 jours à 8 heures mais pas un jour de week end
    0 8 */14 * 1-5 /etc/www/paradise.php
    Ca ce trouve dans le menu 2.3, quelqu'un pourrai me dire pourquoi c'est jamais la même commande ?

    Merci
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  8. #8
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Ben si les fichiers php avec l'extension php sont executés par default avec la commande php-cli -f, tu n'as pas besoin de le marquer.
    A mon avis, il ne doit pas y avoir a chercher plus loin je pense.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Est ce que ton script va être executer (le site va t-il être visité) tous les jours? par toi ou un tiers personnes?

    Si c'est le cas utilise un system, comme sur IPB par exemple? (gestionnaire de tache)

    Dans une bdd tu mes : la tache a exécuter - l'heure d'exécution - faut-il réitérer la tache

    Et a chaque visite sur le site, le script récupère les tache a exécute, en faisant une requête qui select les id ayant une date supérieur/égale à l'heure actuelle.
    Exécute l'action
    Updates le champs, avec la prochaine heure d'exécution

    Faudrait jeter un coup sur la class task de ipb, pour voir son fonctionnement.

  10. #10
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Pour realiser des taches à heure précise, il y'a plusieurs méthodes.

    La plus simple et la plus efficace :
    le CRON avec PHP-CLI.
    - On evite une grosse partie des limitations de php (notamment le temps d'execution qui est illimité)
    - On ne monopolise pas la session du client
    - Cela necessite un server dédié
    - Peut etre problématique pour la sécurité (il faut bien executer ces scripts et les placer dans un espace inaccessible depuis l'exterieur)

    Methode tordu employé par beaucoup de systeme clef en main
    - A la visite d'un user, on verifie si on est pas à l'heure dite (ou dépassé), on lance les taches
    - Ces taches doivent etre limité dans le temps (a moins de demarrer un processus php en // ce qui est vraiment tordu)
    - Par contre, ça marche sur tous les serveurs meme quand on a pas de dédié.

    Personnellement, je prefere largement la methode CRON qui permet de regler finement le processus et de ne pas encombrer la navigation client.
    Je pense que pour IPB, c'est la deuxieme méthode qui est utilisé

    Sur un de mes scripts php, ça m'a beaucoup aidé le CRON et le PHP-CLI :

    - Tous les 24 heures, je chargeais des catalogues produits XML dont certains faisaient 5 à 10 mo
    - je les parsais et les mettais dans une base de donnée
    - je generais une liste de produits en fonction de mots clefs dans le texte
    - je chargeais les images de ces produits et je les redimensionnai
    - j'affichais ces images dans un bloc avec un lien menant sur le produit.

    J'aurai jamais pu faire ça avec du php classique.

  11. #11
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    En plus des solutions listées par Phelim, tu as les site comme http://www.webcron.org/ qui peuvent exécuter des tâches régulièrement.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Oui IPB utilise la méthode de la bdd

    Après c'est juste une question de logique, dans ton cas Phelim, il était tout a fait impensable de l'utilise

    Mais pour, un simple envoi de mail, ca suffit largement.

  13. #13
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Ce n'est pas faux
    C'est vrai que pour envoyer un mail, le cron c'est un peu lourd

  14. #14
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Merci de vos réponse.

    En faite ce n'est pas un simple envoie de mail, il me faut chaque 59min (au minimum) vérifié si une intervention est en court et si oui et qu'elle n'est pas finie il faut envoyer le mail.

    En faite le but est imaginer que le SAS d'une banque est en défault, je doit mailer les responsables et d'autres services toutes les heures jusqua la fin de l'intervention.
    Et si le visiteur ( sachant que ce n'est que l'adminsitrateur ou les agences ( fermées la nuit)) est sur l'intervention il aura du mal à executer mon code à la façon IPB ^^.
    Et il y'as un coté "very important" donc je ne voie pas comment le faire d'une autre manière que par un cron, je connais que php de façon assez efficace pour réaliser ca (pourquoi j'ai laché java moi).

    Enfin j'aimerai tester cli (en faite le logiciel est encore en étude mais j'aime bien prendre les dévants), j'ai un mini débian maison mais lors d'un apt-get php-cli, ca me répond que le paquet n'existe pas

    comment je pourrai vérifier si il est déja présent ? ou bien suis-je obligé d'utiliser php-cli ?

    Je regarde webcron de plus prés ca me semble intéréssant merci.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

  15. #15
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2006
    Messages : 317
    Points : 597
    Points
    597
    Par défaut
    Normalement, cli signifie comand line interface.
    Il n'y a pas de package a installer supplémentaire je crois.

    Il te suffit de lancer php.exe -f tonscript.php

    Que du bonheur ^^

  16. #16
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Ah merci de l'info j'ai php5 sur ma debian, faut juste que je regarde sur la machine du travail si c'est installé ou pas (ils ont un vieux truc ^^).

    Je tag résolu, si ca déconne j'ouvrirai un autre sujet, merci.
    Règles du club -> Cliquez-ici
    FAQ Hardware -> Cliquez-ici
    Vous avez résolu votre souci ->
    F1 et Google sont vos amis.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/03/2010, 16h27
  2. [Geoconcept 6.5] Gestion de données temporelles
    Par Anthony D. dans le forum SIG : Système d'information Géographique
    Réponses: 4
    Dernier message: 28/04/2009, 09h10
  3. Réponses: 4
    Dernier message: 04/07/2002, 12h31
  4. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11
  5. gestion d'un joystick ...
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 23/05/2002, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo