begin process at 2012 05 29 00:37:30
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Crontab et script PHP...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Crontab et script PHP...

lundi 15 août 2011 à 13:28:29 | Crontab et script PHP...

Mickael33480

Membre Club
Bonjour à tous,

Voilà j'ai un petit soucis que je n'arrive pas à avoir... Je vous explique : j'ai un script PHP qui est exécuter par crontab toutes les minutes. Il est lancer comme ceux-ci :

Code :
* * * * * php -f /home/{user}/api/ping.php > /home/{user}/log/crontab/ping.log


Ce script à pour but de détecté et relancer les serveurs qui ne répondent pas au "master". Lorsque je l'exécute par un navigateur, il fonctionne correctement.

Lorsque je passe par les commandes inux / linux (/usr/bin/php ou php /home/{user}/api/ping.php, je peux constater que le scripte me met ça :

Code :
ok pour le serv. : XXXXX en date du 15-08-2011 a 12:21:59
ok pour le serv. : XXXXX  en date du 15-08-2011 a 12:21:59
Le serveur ne répond pas...
Lancement process.


puis il s'arrête, alors que normalement il doit faire ça :

Code :
#!/usr/bin/php 
ok pour le serv. : XXXXX en date du 15-08-2011 a 12:56:01
ok pour le serv. : XXXXX en date du 15-08-2011 a 12:56:01
Le serveur ne répond pas...
Lancement process.
 * Envoie de l'E-Mail d'information au client,
 * Envoie du SMS d'information au N1 sur place,
 * connexion OK,
 * authentification en cours,
 * connexion OK,
 * OK pour envoie de la commande,
 * serveur ok,
 * Envoie de l'E-Mail d'information au client,
 * Clôture intervention avec rapport console.
ok pour le serv. : XXXXX en date du 15-08-2011 a 12:56:13
ok pour le serv. : XXXXX en date du 15-08-2011 a 12:56:13


Si ont compare les deux réponses du script, ont peux constaté que la seconde, qui est exécuter par un navigateur, vérifie deux autres serveurs avant de s'arrêter... Je n'arrive pas a trouver d'où proviens ce défaut, je commence à m'arracher les cheveux .

Je vais mettre mon code épuré en ligne juste ci-dessous.

Merci d'avance.
lundi 15 août 2011 à 13:28:43 | Re : Crontab et script PHP...

Mickael33480

Membre Club
Code PHP :
#!/usr/bin/php
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
set_time_limit(0);
ignore_user_abort(1);

/* Les classes et fonctions incluse par require_once ne sont pas présentes ici*/

mysql_connect("{HOST}", "{LOGIN_NAME}", "{PASSWORD}");
mysql_select_db("{DATABASE}");
$reponse = mysql_query("SELECT * FROM `user_serv` ");
while ($donnees = mysql_fetch_array($reponse) )
{
	$server = new control();
	$status = $server->ServerInfo();
  

if(!$status[ping])
{
 
		if($donnees['ttm'] == "" or $donnees['ttm'] == "0" )
				 {
		$machine = 	  $donnees['ip'];
		$user 	 =    $donnees['pseudo'];
		$pass  	 =    $donnees['pass_ftp'];
		$mail 	 = 	  $donnees['email'];
		$date 	 = 	  date("d-m-Y");
		$heure	 =    date("H:i:s");
		$id 	 =    $donnees['id'];			 
					 
echo " * Envoie de l'E-Mail d'information au client\n";
/* script de l'envoie d'E-Mail au client */

		$message = "

		
		Bonjour,<br><br>
		
		Notre syst&egrave;me de monitoring vient de d&eacute;tecter un d&eacute;faut sur votre<br>
		serveur $machine. Le d&eacute;faut a &eacute;t&eacute; constat&eacute; &agrave; la date $date $heure<br><br>
		
		Notre &eacute;quipe de techniciens sur site (op&eacute;rationnelle 24h/24, 7j/7),<br>
		a &eacute;t&eacute; inform&eacute;e de ce d&eacute;faut et va intervenir sur votre machine.<br><br>
		
		Sachez que d'autres interventions peuvent &ecirc;tre en cours actuellement

		et qu'il faut compter en moyenne 30 minutes par intervention et par machine.<br><br>

		Par cons&eacute;quent, nous ne pouvons pas vous donner plus de pr&eacute;cisions quant &agrave; l'heure de d&eacute;but de l'intervention.<br>
		
		Vous recevrez un email d&eacute;s qu'un technicien prendra en charge votre

		serveur. En attendant, vous avez la possibilit&eacute; de le rebooter &agrave; partir
		de votre manager.<br><br>
		
		Logs:<br>
		----------------------<br>
		PING $machine ($machine) from XXXXXXX : 56(84) bytes of data.<br>
		From XXXXXXX: Destination Host Unreachable<br>
		From XXXXXXX: Destination Host Unreachable<br>
		From XXXXXXX: Destination Host Unreachable<br><br>
		
		--- $machine ping statistics ---<br>
		10 packets transmitted, 0 packets received, +6 errors, 100% packet loss<br>
		---------------------<br><br>
		
		Un red&eacute;marrage automatique viens d'&ecirc;tre effectuer. Merci de vous connecter sur votre pannel, pour v&eacute;rifier le re-lancement du serveur. Si le serveur c'est relancer, nous vous conseillons de v&eacute;rifier sur la console et voir c'est produit.

		
		--<br><br>
		
		
		
		Cordialement,
		
		";

		$sujet = "[suivi] defaut sur le serveur $ip";
		
		$entetes = "MIME-Version: 1.0\n"."From:XXXXXXX@XXXXXXX.fr\r\nContent-type: text/html; charset= iso-8859-1\nBcc:XXXXXXX@XXXXXXX.fr;";
		mail("$mail", "$sujet", "$message",$entetes );
echo " * Envoie du SMS d'information au N1 sur place\n";
/* script de l'envoie du SMS au N1 */

/*SCRIPT NON PRESENT ICI*/

if(false === $connection = ssh2_connect($machine, 22)) 
{	//echec de connexion
echo "echec de connexion";
}
else 
	{	//Connexion OK
		echo "connexion OK\n";
		echo "authentification en cours\n";		
		if(false === ssh2_auth_password($connection,$user,$pass))
			{	
				echo "Echec d'authentification\n";
			}
		else
		{
			echo "connexion OK";
			if(false === $shell=ssh2_shell($connection, 'xterm'))
			{	
				echo "Erreur pour l'envoie de la commande\n";
			}
		else
			{	
			echo "OK pour envoie de la commande\n";
			/*SCRIPT NON PRESENTE ICI
			Il fait une connexion SSH avec le serveur en question, si il n'y arrive pas, Hard reboot de la machine.
			*/
			}
		}
	}

/* second test du serveur */
	if($status[ping])
		{
	echo " * Envoie de l'E-Mail d'information au client\n";
/* script de l'envoie d'E-Mail au client */
	echo (" * Clôture intervention automatisée avec rapport console.\n");
/* script de cloture d'intervention automatise */
		}
	else
		{
	/* Ajout d'une intervention pour vérifier directement dans la baie le fonctionnement du serveur */
		}
		
		}
unset(/* Effacement des variables utilisés précédemment*/);				 
}
else
         {
		$date = date("d-m-Y");
		$heure = date("H:i:s"); 
        echo ("ok pour le serv. : ".$port." en date du ".$date." a ".$heure."\n");
		unset(/* Effacement des variables utilisés précédemment*/);				 
         }
}
mysql_close();
?>
lundi 15 août 2011 à 13:58:24 | Re : Crontab et script PHP...

kohntark

Membre Club
Salut,

Tu fournis beaucoup de code, c'est bien, ... mais on ne retrouve pas :
"Le serveur ne répond pas...
Lancement process."
Où est ce écrit ? Dans la classe control ?

Ca :
Code PHP :
<?php
if (!$status[ping]) {
?>

C'est une erreur de copié/collé ou ping est une constante ?
Faut il l'écrire :
Code PHP :
<?php
if (!$status['ping']) {
?>


Es tu certain que tu entres bien dans cette condition ?
Est ce que l'affichage des erreurs est activé ?
Ton activation est incomplète, il faut ajouter, dans le doute :
Code PHP :
error_reporting(E_ALL);



Cordialement,

Kohntark -
lundi 15 août 2011 à 14:29:37 | Re : Crontab et script PHP...

Mickael33480

Membre Club
Salut kohntark,

Déjà merci pour ta réponse.

Effectivement :
"Le serveur ne répond pas...
Lancement process."

est un oublis, il est dans cette partie :
Code PHP :
<? if(!$status['ping'])
{
 
		if($donnees['ttm'] == "" or $donnees['ttm'] == "0" )
				 {
		$machine = 	  $donnees['ip'];
		$user 	 =    $donnees['pseudo'];
		$pass  	 =    $donnees['pass_ftp'];
		$mail 	 = 	  $donnees['email'];
		$date 	 = 	  date("d-m-Y");
		$heure	 =    date("H:i:s");
		$id 	 =    $donnees['id'];			 
echo " * Le serveur ne répond pas.\n";
echo " * Lancement process.\n";
echo " * Envoie de l'E-Mail d'information au client\n";
/* script de l'envoie d'E-Mail au client */ ?>


Il faut écrire :
Code PHP :
<?php
if (!$status['ping']) {
?>


De ceux que j'ai put constaté, le script vas jusqu'à la condition où il indique que le serveur ne ce lance pas puis il s'arrête au niveau de la connexion SSH ici :

Code PHP :
<? echo " * Envoie du SMS d'information au N1 sur place\n";
/* script de l'envoie du SMS au N1 */

/*SCRIPT NON PRESENT ICI*/

if(false === $connection = ssh2_connect($machine, 22)) 
{	//echec de connexion
echo "echec de connexion";
}
else 
	{	?>


J'ai déactiver le script d'envois de SMS pour voir si il n'y avait pas une erreur de codage (ça peux arriver ), mais pas plus d'avancement...

pour info j'ai configurer mon serveur php en short_open_tag 1 donc il comprend le <? ?>

Je viens d'ajouter aussi :
Code PHP :
<? error_reporting(E_ALL); ?>


Le serveur ne me donne pas plus de code erreur que toute à l'heure....
lundi 15 août 2011 à 15:26:40 | Re : Crontab et script PHP...

kohntark

Membre Club

De ceux que j'ai put constaté, le script vas jusqu'à la condition où il indique que le serveur ne ce lance pas puis il s'arrête au niveau de la connexion SSH ici


Si il s'arrêtait vraiment là tu aurais les echo de l'envoi du mail non ?
(* Envoie de l'E-Mail d'information au client, etc ...)
Hors d'après ce que tu dis dans ton premier post les derniers echo sont :
"Le serveur ne répond pas...
Lancement process."

En ajoutant des echo un peu partout, voir en désactivant certaines portions de code (mail, ...) tu devrais localiser précisément l'endroit où ça bloque.

Quand tu dis "puis il s'arrête" (", alors que normalement il doit faire ça :") le process est il réellement terminé ?
Utilises tu le même php.ini que le serveur web ?
Dans le code non présent ici tu n'as pas une boucle ou un appel à une fonction système qui poserait pb ?
Un ob_start() qqpart ?
Un die() exit() ?
...


Cordialement,


Kohntark -
lundi 15 août 2011 à 16:48:40 | Re : Crontab et script PHP...

Mickael33480

Membre Club
Salut,

Sur le script j'avais la commande "echo * Envoie de l'E-Mail d'information au client," qui étaie commentée donc pas d'affichage direct. Normalement c'est un script exe par crontab donc pas de retour à avoir...

J'ai activer tous les echos maintenant. J'ai comment la fonction ssh2 pour voir et voici ce que le serveur fait maintenant :

Code :
ok pour le serv. : XXXXX  en date du 15-08-2011 a 16:42:32
ok pour le serv. : XXXXX en date du 15-08-2011 a 16:42:32 * Le serveur ne répond pas. * Lancement process. * Envoie de l'E-Mail d'information au client * Envoie du SMS d'information au N1 sur place * Toujours pas de réponse du serveur, ajout d'une intervention pour vérifier directement dans la baie le fonctionnement du serveur ok pour le serv. : XXXXX en date du 15-08-2011 a 16:42:32 ok pour le serv. : XXXXX en date du 15-08-2011 a 16:42:32


Entre l'envoie de l'E-mail et le SMS normalement il y a la connexion SSH, je sais ça change un peux du script qui est énoncé plus haut.
mardi 16 août 2011 à 00:36:56 | Re : Crontab et script PHP...

Mickael33480

Membre Club
Re,

Je pense que cela viens de la commande avec le ssh2_connect(....), qui n'est pas "compris" par la fonction php /home.../ping.php car si je test avec un script fonctionnel il ne passe pas non plus... J'en perds mon latin


Cette discussion est classée dans : code, php, ok, serv, xxxxx


Répondre à ce message

Sujets en rapport avec ce message

HELP !!! code php pas tout à fait ok [ par emetrem ] Bonjour à tous /toutes, Je débute complètement en php et même en html. il y a 6 mois je ne savais pas comment envoyer un site sur la toile !!! c'est php SQL (ajout) [ par medhamdi12 ] bon journée a tous, dans le code php ci dessous il affiche des erreurs en exécution Undefined index: dat Undefined index: nbr Aide moi SVP code: Script protégée avec Starpass [ par Clad38 ] Bonsoir à tous, Ayant actuellement un serveur de jeu en ligne, un système de dons via Starpass est disponible. Pour le moment mon équipe et moi même banalisation compliqué [ par j3r3m067 ] Bonjour à tous, j'essai de banaliser mon expression pour que quand je clique sur le bouton test, ça execute mon windows.location. Mais j'y arrive pa Quelle action pour mon formulaire? [ par padymen ] Bonjour, j'ai écrit un formulaire pour créer un fichier XML et un formulaire pour alimenter une base de donnée. Comme les champs ne sont pas disjoints Lancer le téléchargement d'un .exe [ par N3N3SS ] Bonjour tout le monde, J'ai fini de créer mon site, j'y propose le téléchargement d'un exécutable, calculette de windows pour les tests. J'ai dans m problème de selection dans un tableau (php) [ par tagadax ] Bonjour à tous!! Voila j'ai un petit souci.J'ai construis un tableau et donc a chaque bout de colonne j'ai inclu un checkbox.En dehors de mon tableau Session PHP [ par gabkiel ] Bonjour, Je suis en train de mettre en place un système de session pour un site en php,j'ai un fichier sessions.php: [code=php]<? $save_path='C:\W iframe voilà faire apparaître mon php [ par speedylol ] bonjour ;-) voilà comment faire apparaître le titre de mes script php qui son afficher dans mon iframe la partie en rouge ? [code=html] <!DOCTYPE ht Redirection depuis index.php [ par Elisa23 ] Bonjour, J'ai fait un site en Anglais et en Français. Les deux site sont hébergés au même endroit. Je vous ai fait une petite arborescence pour essay


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,746 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales