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 :

Parallèlisation entre un script et de l'ajax


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut Parallèlisation entre un script et de l'ajax
    Bonjour,

    J'ai un script très long (script.php) qui fait des opérations très longues. Je lance la page et j'attends 5 jours qu'il ai fini. Au fur et à mesure qu'il effectue ses calculs, il rentre des infos dans la base de données.
    A côté de ça j'ai une page (graphique.php) qui présente le nombre d'enregistrements de cette base. Une page (ajax.php) est régulièrement appelée qui va compter le nombre d'enregistrement de la base.

    Mon soucis est que lorsque je lance script.php plus rien ne marche. Les pages ajax.php sont mises en attente et j'ai la réponse seulement quand script.php a fini son travail. Du coup ça n'a aucun intérêt et je ne peux pas suivre l'évolution du script. On m'a dit que la meilleure manière de résoudre cela était plutot que de faire un script.php avec une grande boucle while, de faire plusieurs appels en ajax qui procèdent aux opérations à chaque appel. Mon souci est que cette méthode n'est pas envisageable car à partir du moment où les opérations de script.php sont lancées, aucune interruption ne doit être possible (ça fait partie des contraintes majeures de mon outil). Il y a d'ailleurs un ignore_abort_user(true) au début pour s'assurer qu'en cas de fermeture du navigateur, si le script a commencé, le script fini.

    J'ai aussi été dirigé vers pcntl mais je n'y comprends rien et ça semble bien compliqué pour ce que je veux faire. Tout ce que j'aimerais c'est que script.php ne soit pas bloquant et que ajax.php puisse faire de petits appels pendant qu'il travaille pour voir où ça en est à peu près.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 60
    Par défaut
    Salut,

    Je préfère prévenir, je lance juste une piste, une supposition :

    Ton script.php est très lourd, la question est : est ce qu'il bloque le reste des scripts car il pompe toute les ressources de la machine ?

    Si oui, a part optimiser ton script je ne vois pas vraiment d'autre solution.
    Si non, il se peut qu'il soit tout simplement très long a parcourir et qu'il se lance dans le thread principale, as tu essayé de voir du coté des Thread pour le lancé dans un thread parallele ?

    http://php.net/manual/fr/class.thread.php

    Bonne journée !

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Et s'il s'agit d'une saturation des ressources serveur, pose peut-être aussi la question dans le forum "administration serveur" pour avoir plus de réponses.

    Sinon je me souviens de bug de requêtes ajax dans certains cas (mais qui à priori ne devraient pas te concerner).

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    Non ça n'est pas une question de performance, si je met un sleep dans une boucle while ça fait pareil.
    Je vais mettre en place thread mais c'est hyper compliqué. Il faut installer pthreads mais avant il faut recompiler php avec ZTS. Alors j'avais installé php 5.6.2 en le compilant bien mais ça n'a pas marché car mon ancienne version 5.4.35 semble persister. Du coup je désinstalle php et là surprise, tous mes sites fonctionnent encore et quand je redémarre mon serveur ça me met "Apache/2.2.22 (Debian) PHP/5.4.35-0+deb7u2 configured -- resuming normal operations". Maintenant je ne peux plus désinstaller php. Au secours au secours !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    root@sd-60694:~# php -v
    PHP 5.6.2 (cli) (built: Dec  5 2014 22:22:54)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    root@sd-60694:~# php -v
    PHP 5.6.2 (cli) (built: Dec  5 2014 22:22:54)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    root@sd-60694:~# apt-get remove --purge php5
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    Les paquets suivants seront ENLEVÃSÂ*:
      php5*
    0 mis Ã* jour, 0 nouvellement installés, 1 Ã* enlever et 70 non mis Ã* jour.
    Après cette opération, 21,5 ko d'espace disque seront libérés.
    Souhaitez-vous continuer [O/n]Â*? o
    (Lecture de la base de données... 69834 fichiers et répertoires déjÃ* installés.)
    Suppression de php5 ...
    root@sd-60694:~# php -v
    PHP 5.6.2 (cli) (built: Dec  5 2014 22:22:54)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    root@sd-60694:~# apt-get remove --purge php5
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    Le paquet «Â*php5Â*» n'est pas installé, et ne peut donc être supprimé
    0 mis Ã* jour, 0 nouvellement installés, 0 Ã* enlever et 70 non mis Ã* jour.
    root@sd-60694:~# php -v
    PHP 5.6.2 (cli) (built: Dec  5 2014 22:22:54)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies
    root@sd-60694:~# apt-get remove php5
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    Le paquet «Â*php5Â*» n'est pas installé, et ne peut donc être supprimé
    0 mis Ã* jour, 0 nouvellement installés, 0 Ã* enlever et 70 non mis Ã* jour.
    root@sd-60694:~# apt-get remove php
    Lecture des listes de paquets... Fait
    Construction de l'arbre des dépendances
    Lecture des informations d'état... Fait
    E: Impossible de trouver le paquet php
    root@sd-60694:~# php -v
    PHP 5.6.2 (cli) (built: Dec  5 2014 22:22:54)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.6.0, Copyright (c) 1998-2014 Zend Technologies

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Sur le problème de départ, le blocage peut être du au verrouillage d'un fichier.
    Par exemple si tes scripts utilisent des sessions PHP, le premier script va verrouiller la session et les autres script vont attendre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    Ben non c'est pas ça. Si je fais une boucle avec un sleep ça fait pareil

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

Discussions similaires

  1. Différences entre langages scriptés et compilés
    Par @v@lon dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/03/2007, 16h51
  2. interaction entre plusieur script python par le biai d'internet
    Par yggdrazil dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 01/11/2006, 14h36
  3. passage de variable entre 2 scripts
    Par Atrahazis dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/08/2006, 22h20
  4. Problème de compatibilité entre deux scripts
    Par frutix dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2006, 14h24

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