2013-05-27 1 views
1

Pour un script de phpagi raison arrêter au hasard est au milieu. Cela ne se produit qu'une fois tous les 20 à 50 appels. J'ai été capable de remarquer plusieurs tels 'échecs' en temps réel dans l'astérisque CLI. Aucune erreur n'a été affichée. Le script a envoyé plusieurs messages verbeux jusqu'à ce qu'il s'arrête.script phpagi arrête au hasard

Script est utilisé pour la facturation, il dispose de plusieurs requêtes de while et sql. La durée d'exécution maximale est fixée à 30 secondes.

Je ne trouve pas d'erreur dans le répertoire/var/log/messages ou/var/log/astérisque/messages

  • Asterisk 1.6.2.24
  • PHP 5.1.6 (cli) (construit le: 27 juin 2012 12:21:13)

    [context-x] 
    exten => 1,1,Dial(SIP/XXXXXX) 
    exten => h,1,AGI(script.php) 
    

Toutes les idées pourquoi il pourrait juste arrêter pour les appels au hasard?

Merci.

MISE À JOUR: Je viens de remarquer que lorsque le problème se produit AGI retourne 4:

-- <SIP/xxxxxx-00000185>AGI Script script.php completed, returning 4 

Quel est le problème?

Répondre

4

D'après ce que j'entends de vos symptômes, il ne semble pas que c'est spécifiquement un problème d'Asterisk, mais pourrait être un problème avec votre script. Voici un certain nombre de conseils sur la façon dont je voudrais déboguer une application sans aucune connaissance de ce qui se passe dans les coulisses du script AGI lui-même ...

Premièrement, AGI Script script.php completed, returning 4 signifie que votre script se termine sans un code d'état de sortie propre . returning 0 est ce que vous aimeriez voir. Vous pouvez voir le dernier code d'état de sortie à l'invite bash en exécutant un script, puis en vérifiant le code d'état avec la variable $?. Comme ça:

[[email protected] ~]$ ./script.php 
[[email protected] ~]$ echo $? 
0 

Asterisk vous dit ce qui est arrivé à votre script. Tout ce qui n'est pas zéro est "quelque chose ne va pas ici". Généralement, vous pouvez les personnaliser à votre goût, donc spécifiquement 4, je ne suis pas sûr.

Une chose que vous voulez faire est activer le débogage AGI comme ceci:

host*CLI> agi set debug on

Ensuite, exécutez votre script, et voyez si vous pouvez trouver que votre script php est crachait toute erreur.

Une autre recommandation que j'aurais est de vous assurer que votre php est à votre syslog exploitation forestière afin que vous puissiez trouver des erreurs dans/var/log/messages. Vous pouvez le faire en mettant dans votre /etc/php.ini cette ligne:

error_log = syslog

Enfin, pour essayer de reproduire l'erreur, je suggère d'utiliser une boîte de développement, et l'origine d'un tas d'appels pour vous-même, et de construire un script au create a bunch of "call files".

est ici un fichier d'appel pour vous aider à démarrer:

Channel: LOCAL/[email protected] 
MaxRetries: 2 
RetryTime: 60 
WaitTime: 30 
Application: Wait 
Data: 30 

Lorsque vous avez créé un fichier, le déplacer vers /var/spool/asterisk/outgoing (déménagement est important, vous voulez que le déplacement du pointeur, car astérisque peut prendre le fichier trop tôt si vous écrivez dans ce répertoire d'abord).

Vous pouvez également lancer un appel sur une extension de la CLI:

host*CLI> channel originate LOCAL/[email protected] application Wait 5

Vous pouvez également utiliser d'autres options dans le fichier d'appel, comme CallerID: John Doe <8005551212> afin de fournir des données intéressantes à votre Application AGI pendant que vous créez des tests pour répliquer le problème.

+0

Je vous remercie pour votre réponse détaillée, mais je ne pense pas que ce problème est lié au script, car il ne se passe que pour 3% des appels. J'ai déjà essayé d'exécuter le script directement, activé le débogage agi, activé le journal des erreurs PHP dans le fichier, etc. Aujourd'hui, j'ai trouvé cette discussion: http://lists.digium.com/pipermail/asterisk-users/2011-September /266522.html et je pense que je suis confronté au même problème. Je vais essayer d'utiliser System() au lieu de AGI(). Je vous ferai connaître les résultats. – k4h

+0

Quelle version utilisez-vous?/Avez-vous essayé une autre version? – dougBTV

+0

En outre, consultez ce rapport de bogue/correctif, se rapportant à la version 1.8.7 - https://issues.asterisk.org/jira/browse/ASTERISK-18811 – dougBTV