Bonjour, je suis nouveau ici car je suis bloqué.

Pour mettre un peu de contexte, ma boite fait du B2B avec des commerciaux sur la France et qui utilise une application Web développée en interne pour la gestion commercial.
Après la validation d'une commande, les infos vont dans Sage pour la gestion des stocks et la compta.

Nous avons mis en place récemment un outil pour faciliter la logistique à effectuer les transformations de documents (bon de commande -> bon de livraison) qu'ils faisaient manuellement.
Cet outil utilise les Objet Métier de sage via une DLL.

Au départ, nous l'attaquions directement via un objet COM, nous avions remarqué que de temps en temps le script tournais dans le vide indéfiniment au niveau de l'objet COM.
Puis nous sommes passé par un script Python pour créer des fonctions qui appellent la DLL et cela fonctionne correctement. Cependant en prod le temps augmente au fur et a mesure de la journée avec le nombre de transformations à cause de Sage qui prend de plus en plus de ressource.

Bon, je pourrais normalement m'arrêter là car nous avons contacter le revendeur pour faire une analyse du programme, mais étant donné qu'on utilise pas le langage recommandé (VB avec le Framework .Net) on n'a pas de réponse.

Donc j'ai refait une partie du code créé sous Python sous VB .Net et générer une DLL . Malheureusement, je me retrouve avec le même problème qu'au début soit un objet COM qui tourne indéfiniment dans le vide (exemple : j'ai lancer le script hier à 16:20 et aujourd'hui 9:16 il tourne toujours)

Pour finir, connaissez-vous un autre moyen d'accéder a une DLL sans COM ( ou DOTNET car Net Framework 4.7.2 ) ?

Code pour accéder a l'objet COM :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
		try {
			echo '<pre>';
			$connCial = new COM('SageOm.OM.passerelle', null, null, null); //without extension '.dll' for theNameOfDllFile
			echo $connCial->version(); // return "0.0.4"
			$response = $connCial->TransformationBL(1, '190917349');
			echo $response;
			if (!$response) throw new Exception("Impossible de transformer le document", 1);
 
			echo 'YES'; 
		} catch (\Throwable $th) {
			echo $th->getMessage();
			echo 'NO';
 
		}
 
		exit;
j'ai fait des tests :
si je retourne directement un string, j'ai le même comportement.
depuis un projet VB.net la dll fonctionne sans problème. idem via python même si c'est plus lent.

[UPDATE]
j'ai contourné le problème pour appeler la DLL via un .exe avec shell_exec() mais les temps sont variables pour le même document dont certain trop long (1 - 47 s)