J'utilise phpseclib pour SSH sur mon serveur distant à partir d'un navigateur Web et j'exécute un fichier php. Voici le code que j'utilise:phpseclib ssh exec callback ne fonctionne pas
$ssh->exec('cd myfolder/; php main.php ' . $file, 'packet_handler');
function packet_handler(){
echo "Completed";
header("Location: exec_completed.php");
}
Le fichier main.php est exécuté sans aucun problème. Le problème est de retourner les données après l'exécution. J'ai les questions suivantes:
Je fais beaucoup de traitement dans le fichier main.php et j'ai besoin de réaliser des progrès en temps réel de ce qui fait le script. Lorsque j'exécute le fichier via exec, seul le premier écho du fichier main.php est imprimé et l'exécution s'arrête. Est-il possible d'obtenir des données en temps réel à partir du script d'exécution. Phpseclib pour les rappels, même si ma fonction de rappel packet_handler ne s'exécute pas après l'exécution de exec. Je veux rediriger vers une autre page une fois que le fichier main.php que j'ai exécuté via SSH a terminé son exécution. Maintenant, si je redirige vers cette page, je n'obtiens que des résultats partiels car le fichier main.php n'a pas terminé son exécution. J'ai essayé d'utiliser sleep (10) mais mon main.php peut prendre plus de temps à s'exécuter à certains moments, donc cela n'a pas fonctionné. S'il vous plaît suggérer des idées
exemple de rappel de phpseclib:
<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
exit('Login Failed');
}
function packet_handler($str)
{
echo $str;
}
$ssh->exec('ping 127.0.0.1', 'packet_handler');
?>
Merci pour l'aide. Je n'ai pas inclus de rappel maintenant. C'est ma sortie de journal. http://pastebin.com/PzKe5sUv Je vois que les données que j'ai répercutées dans mon fichier main.php sont disponibles dans le journal mais elles ne sont pas affichées quand je l'exécute. En ce qui concerne la sortie de mon fichier: J'analyse un fichier csv et effectue un appel de savon à un service Web avec ces données analysées et affiche les résultats en retour. J'ai essayé d'utiliser if (read ('mon dernier écho') {rediriger vers un autre fichier;} mais il est exécuté quelle que soit la chaîne que je donne.Comment puis-je utiliser read() pour trouver que le fichier main.php a terminé son exécution. –