Bonjour,
Je cherche à détacher une commande php du processus principal.
L'environnement:
Je fais une requête Ajax à partir d'un client Web vers un serveur A.
Cette requête a pour but d'initier une copie (Fichiers, infos dans la base de données) entre le serveur A et un second serveur B.
Ma première idée, a été de faire un "fork" du processus:
Après avoir préparé l'envoi de données et vérifié si tout était ok (accès compte distant, faisabilité...) je séparait le processus en 2:
1- Le premier processus retournait au client Web une réponse à la requête Ajax (Ce qui permet d'informer l'utilisateur de la validation de sa demande (ou pas ;-))
2- Le second initiait la copie de fichiers entre les 2 serveurs (copie via ssh) et appelait à l'aide de "curl" l'adresse requise sur le serveur B.
Une fois la copie terminée, le serveur B envoi un email à l'utilisateur pour lui confirmer que tout c'est bien passé.
Tout cela fonctionne correctement sur du réseau local et des tailles de fichiers raisonnable ( < 100 mo).
Mais je rencontre des problèmes lorsque la taille des fichiers augmente, le second processus semble s'arrêter sans raison apparente. (L'application doit gérer des copies de quelques 100n de Mo sur des serveurs distants)
--> En creusant un peu l'utilisation de fork, j'ai compris que le but est de simuler une parallélisation, mais il faut que le processus père pilote le second processus.
Et une fois les 2 processus arrivés au bout on termine le 1er, ce n'est pas ce que je veux.
Dans mon cas, il faut que le processus soit complètement détaché de manière à ce que le père puisse répondre à la requête Ajax rapidement et que la copie puisse être faite après en temps voulu.
Tout le code étant maintenant écrit pour des requêtes entre serveurs avec CURL, je voudrais pouvoir le conserver et ne pas avoir à changer d'outil pour le lien entre les serveurs.
D'avance merci à vous pour vos idées.
Partager