Cela n'a probablement pas de sens, mais c'est pourquoi je suis ici. J'ai hérité d'un site Web que j'essaie de plus de "fonctionnalités" comme Frankenstein a besoin d'un deuxième bras gauche.Application fonctionne différemment via curl de php que direct
Une partie de l'application fait environ 10 appels API différents à divers fournisseurs de services à travers le pays pour obtenir des devis. Il le fait en générant plusieurs URL différentes et en utilisant mcurl pour les obtenir en parallèle. Aucun d'entre eux ne renvoie de code HTML, ils interrogent chacun une seule API et mettent à jour la base de données.
Il faut quelques secondes pour s'exécuter, tournant ses roues à mesure qu'il effectue les requêtes API, mais rien dans la base de données n'est mis à jour. Je peux voir dans les journaux chacune des URL demandées. Si je prends l'une de ces URL, et que je la mets dans la barre d'adresse d'un navigateur, cela fonctionne très bien. L'API est appelée et la base de données est mise à jour.
Attendez, il n'y a plus! Afin de déboguer ces scripts individuels (puisqu'ils n'ont pas de sortie) j'utilise fwrite(). Cela fonctionne quand j'utilise une URL dans la barre d'adresse d'un navigateur, mais rien n'est écrit alors tous les scripts sont exécutés via mcurl. (multi-curl_execute() pour être précis.)
En résumé, quand php utilise curl pour exécuter un script, il ne mettra pas à jour la base de données mysql, et il ne me permettra pas de rouvrir un fichier. Cela fonctionne si je coupe/colle la requête GET des journaux dans la barre d'adresse d'un navigateur.
Maintenant, ce logiciel a été en production pendant un certain temps sur le site en direct, et travaille pour eux comme prévu. Je fais du développement sur ma machine locale, et c'est là que ça échoue. Ça doit juste être quelque chose de très simple.
--Dave
J'ai regardé dans la session et d'autres biscuits, mais la seule information là est également envoyée dans l'URL elle-même. Il n'y a pas de vérification de variable de navigateur ou $ _SERVER. Je pense que les appels API sont bons, c'est les URL locales séparées qui refusent de fonctionner correctement. –