2009-08-22 6 views
1

J'ai mes scripts PHP en cours d'exécution sur le serveur WAMP. Voici ce que je faisRéponse lente à la base de données écrire à partir de php

  1. scripts PHP A qui interroge la base de données et obtient un ensemble de lignes (je mets la set_time_limit (0) // durée illimitée pour le script à exécuter)
  2. Basé sur le résultat ensemble I exécution d'un script Tcl pour chaque ligne du jeu de résultats
  3. le script TCL prend environ une minute pour exécuter, il insère également des données sur la même base de données
  4. maintenant simultanément lorsque le script TCL est en cours d'exécution, si je exécuter un autre script PHP qui écrit dans la base de données, je ne suis pas capable de le faire car le temps de réponse est trop lent. Il attend enfait pour le script de script PHP A/TCL pour compléter
  5. Cependant pendant ce temps, se lit de la base de données est fine et rapide

Est-ce que quelqu'un a des suggestions?

Cordialement, Mithun

+0

La base de données est MySQL. – Vidya

+0

Quel moteur utilisez-vous pour ces tables? Est-ce que l'un des scripts en question fonctionne avec des transactions? –

+4

Si vous utilisez des tables myisam, mysql verrouille toute la table lors de l'écriture sur la table. Vous êtes probablement en train d'exécuter des instructions de mise à jour ou instert à exécution longue, ou sinon de verrouiller explicitement la table dans le code. Ou vous utilisez innodb et avez des transactions à long terme – nos

Répondre

4

Une session ne peut pas être partagée par les scripts simultanés. Toutes les nouvelles demandes qui tentent de session_start() seront suspendues à ce stade en attendant la fin du script précédent. Comme votre script prend un temps indéterminé pour terminer, c'est une bonne idée de session_write_close() juste après avoir obtenu toutes les informations dont il a besoin de la superglobale $ _SESSION, afin que les demandes simultanées ne soient plus bloquées.

+0

Merci beaucoup pour la réponse. Ça a marché !!! – Vidya

Questions connexes